Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringBean范围。单例与原型_Java_Spring - Fatal编程技术网

Java SpringBean范围。单例与原型

Java SpringBean范围。单例与原型,java,spring,Java,Spring,假设有两个类ClassA和ClassB。让我们假设ClassB依赖于ClassA。在配置文件上,若我们将ClassA的作用域定义为singleton,将ClassB的作用域定义为Prototype,那个么每次创建ClassA的bean实例时,ClassB的实例会发生什么变化?每次返回ClassA实例时,会返回相同的ClassB实例还是创建新实例 谢谢你 如果ClassB是prototype,则始终会创建ClassB的新实例,它在创建时不会考虑其他类 因此,ClassB是原型和ClassA单例,在

假设有两个类ClassA和ClassB。让我们假设ClassB依赖于ClassA。在配置文件上,若我们将ClassA的作用域定义为singleton,将ClassB的作用域定义为Prototype,那个么每次创建ClassA的bean实例时,ClassB的实例会发生什么变化?每次返回ClassA实例时,会返回相同的ClassB实例还是创建新实例


谢谢你

如果ClassB是prototype,则始终会创建ClassB的新实例,它在创建时不会考虑其他类

因此,ClassB是原型和ClassA单例,在某个时刻,应用程序中可能有N个ClassB实例,而只有1个ClassA实例

在您的情况下,由于在您的应用程序生命周期中只存在一个ClassA实例,因此它只有一个实例ClassB,这将不同于应用程序中其他bean引用的任何其他ClassB

每次创建bean实例时,类B的实例会发生什么情况 A类的

由于
ClassA
是一个单实例,因此
ClassB
的所有实例将共享一个单实例

将返回相同的ClassB实例还是创建新实例 每次返回ClassA实例时

我想这里您的意思是,将返回相同的ClassA实例,还是创建新实例 每次返回ClassB实例时

每次创建
ClassB
实例时,将(重新)使用共享的
ClassA
实例

每次创建bean实例时,类B的实例会发生什么情况 A类的

没有,如果ClassA是单例的,它将只实例化一次

将返回相同的ClassB实例还是创建新实例 每次返回ClassA实例时


不同的实例,因为它是一个原型bean。但由于ClassA是单例的,所以每次都将以相同的方式实例化(取决于您提到的这些类之间的关系)

我肯定会返回相同的ClassA实例…但不确定ClassB实例。非常感谢。这么多春季程序员…:在原型bean中注入一个单例bean将导致原型bean的不同实例使用同一个单例bean实例。对于相反的情况(在单例中注入原型bean),默认情况下,if将使用原型bean的相同实例为单例bean提供服务(有关更多信息,请参阅)。