当我们使用getBean方法创建原型bean时,是否会创建bean属性的新实例(单例)?

时间:2019-01-04 11:38:25

标签: java spring

假设两个类

   @Scope("prototype")
    Class A{
    @Autowired
    private B b;

    }

   @Scope("singleton")
    Class B {

  }

并调用以下ApplicationContext方法。

context.getBean("A")

将导致创建新的A bean,但也会创建一个新的B bean并注入它或使用现有的B bean。

2 个答案:

答案 0 :(得分:1)

答案是否定的。由于B是Singleton范围的。 B bean的生命周期总是每个容器一次,无论有多少A对其进行引用。

答案 1 :(得分:0)

不。它是类B的唯一实例,因为它是单例的,但是当为A创建原型实例时,所有Spring容器都会为B创建代理,并将其分配给A的新实例。这样做是在维护单例和原型的属性。

但是请确保您需要此类参考。Spring使用@Lookup批注来查找相关参考。