SpringJavaBean需要通过prototype作用域使用相同的对象
对于出现的线程安全问题,我们将单例bean转换为原型。但在一个场景中,我们仍然需要为多个映射项使用相同的对象(在该线程中)。但原型给出了不同的对象(当然会)。我不知道如何实现它
例如,在下面的bean A中,B1和B2被引用两次(这是prototye bean)。每次在同一线程中创建新的B1和B2对象。我只希望在同一线程中有一个B1和B2对象,即使我引用了它两次。若B1和B2是单态,那个么在al线程上是相同的,这是不应该发生的。你能提供一些如何实现这一目标的想法吗
<bean id="A" class="mypackage.foo" scope="prototype">
<property name="myMap">
<bean class="org.springframework.beans.factory.config.MapFactoryBean">
<property name="targetMapClass">
<value>java.util.HashMap</value>
</property>
<property name="sourceMap">
<map>
<entry key="KEY1">
<ref bean="B1"></ref>
</entry>
<entry key="KEY2">
<ref bean="B2"></ref>
</entry>
<entry key="KEY3">
<ref bean="B1"></ref>
</entry>
<entry key="KEY4">
<ref bean="B2"></ref>
</entry>
</map>
</property>
</bean>
</property>
# 1 楼答案
如果你正在开发一个Web应用程序,如果你在一个线程中处理一个HTTP请求,你可以考虑使用请求范围。如果没有,您可能希望注册SimpleThreadScope并使用它来声明bean
# 2 楼答案
在Apokralipsa suugestion的基础上,在bean下面添加了线程,然后使用线程作为范围,从而解决了该问题