Spring bean范围。单身人士和原型

时间:2013-10-15 13:45:07

标签: java spring

假设有两个类ClassA和ClassB。让我们假设ClassB依赖于ClassA。在配置文件中,如果我们将ClassA的范围定义为singleton而ClassB的范围定义为Prototype,那么每次创建ClassA的bean实例时ClassB的实例会发生什么?是否会返回相同的ClassB实例,或者每次返回ClassA实例时都会创建新实例?

谢谢!!!

3 个答案:

答案 0 :(得分:5)

如果ClassB是原型,总是会创建一个新的ClassB实例,它在创建时不会处理其他类。

所以ClassB是原型和ClassA单例,你可以在某个时候在你的应用程序中拥有N个ClassB实例和1个ClassA。

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

答案 1 :(得分:3)

  

每次创建bean实例时,ClassB的实例会发生什么   ClassA?

由于ClassA是单身,因此<{1}}的所有实例之间将共享单个实例。

  

是否会返回相同的ClassB实例或创建新实例   每次返回ClassA的实例?

我认为你的意思是将返回相同的ClassA实例或创建新实例 每次返回ClassB的实例?

每次创建ClassB的实例时,都会(重新)使用共享的ClassB实例。

答案 2 :(得分:2)

  

每次创建bean实例时,ClassB的实例会发生什么   ClassA?

没有,如果ClassA是单例,它只会被实例化一次。

  

是否会返回相同的ClassB实例或创建新实例   每次返回ClassA的实例?

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