Springbean范围:单例和原型

Springbean范围:单例和原型,spring,Spring,案例1:假设我们正在原型bean中注入单例bean,那么如果我们调用原型bean,将创建多少实例 考虑以下场景:- <bean id="a" class="A" scope="prototype"> <property name="b" ref="b"> </bean> <bean id="b" class="B"> <bean id="a" class="A" > <property name="b" ref="b"&

案例1:假设我们正在原型bean中注入单例bean,那么如果我们调用原型bean,将创建多少实例

考虑以下场景:-

<bean id="a" class="A" scope="prototype">
 <property name="b" ref="b">
</bean>

<bean id="b" class="B">
<bean id="a" class="A" >
  <property name="b" ref="b">
</bean>

<bean id="b" class="B" scope="prototype">

案例2:假设我们在单例bean中注入原型bean,那么如果我们调用单例bean,将创建多少实例

考虑以下场景:-

<bean id="a" class="A" scope="prototype">
 <property name="b" ref="b">
</bean>

<bean id="b" class="B">
<bean id="a" class="A" >
  <property name="b" ref="b">
</bean>

<bean id="b" class="B" scope="prototype">


单例bean将始终引用同一个对象。原型将创建与引用bean次数相同的实例。您提供的用例不会改变这个范例。

我正在回答您问题的一部分

案例2:具有原型bean依赖项的单例bean

通过这种配置,当您从应用程序上下文中获取一个时,它将被连接到一个新的B,因为我们声明B bean属于原型范围。但这不会发生

当应用程序上下文被初始化时,它会看到一个是单例bean,并在将其与所有依赖项集连接后将其初始化到上下文中。因此,从开始,当我们请求A的上下文时,它每次都返回相同的bean,因此每次都会得到相同的B

您可以使用查找方法解决/克服。参考这个