Springbean范围:单例和原型
案例1:假设我们正在原型bean中注入单例bean,那么如果我们调用原型bean,将创建多少实例 考虑以下场景:-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"&
<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
您可以使用查找方法解决/克服。参考这个