当我在服务器上运行bean方法的第一个小方法(让我们说方法A)时,一切似乎都没问题,但是当第二次运行这个carrierRESTWS bean上的任何请求时(让&# 39;说方法B),使用的dao是相同的carrierDAO实例。我怎样才能避免出现这个问题,并且每次调用这个carrierRESTWS bean时注入都会使用dao的新实例?
xml文件中的Bean配置:
<bean id="carrierRESTWS" class="ar.com.anovo.controllers.rest.CarrierRESTWS">
<property name="carrierDAO" ref="carrierDAO"/>
</bean>
<bean id="carrierDAO" class="ar.com.anovo.dao.CarrierDAO"></bean>
答案 0 :(得分:1)
将“carrierDAO”的范围设置为“原型”:
<bean id="carrierDAO" class="ar.com.anovo.dao.CarrierDAO" scope="prototype" />
一旦需要注射,这将创建一个新实例。
有关范围的更多信息,请参阅Spring Doc。
答案 1 :(得分:0)
你的bean是单独的bean,所以它们只要Spring容器存在就会存在,这基本上只要你的程序正在运行,这意味着只要你的webapp正在运行,这理论上可能是几年
由于您的控制器和DAO类当然已被编码为无状态,并且支持多线程,因此单个共享实例不应该出现问题。
答案 2 :(得分:0)
spring中的默认范围是singleton
,因此您需要显式设置每次创建一个新实例的范围,如@Stefan用prototype
表示的那样。