2015-09-22 72 views
3

當我在服務器上運行bean的方法(比方說方法A)的第一個petittion時,一切似乎都沒問題,但是當第二次運行此載體上的任何請願者RESTWS bean(比方說方法B)時,使用的dao是同一個carrierDAO實例。我該如何避免出現這個問題,並在每次調用carrierRESTWS bean時使注入使用一個新的dao實例?春季初始化bean存活多久?

豆類XML文件中的配置:

<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

爲什麼你需要一個非單身DAO? –

回答

1

設置「carrierDAO」到「原型」的範圍:

<bean id="carrierDAO" class="ar.com.anovo.dao.CarrierDAO" scope="prototype" /> 

這將創建一個新的實例,一旦所需的注射。請致電Spring Doc

0

你的豆單豆,讓他們住,只要Spring容器的生命,這基本上意味着,只要你的程序正在運行,這又意味着只要你的webapp正在運行,這在理論上可能是幾年。

由於您的控制器和您的DAO類當然被編碼爲無狀態,並且支持多線程,所以您不應該對單個共享實例有任何問題。

0

彈簧的默認範圍是singleton,所以您需要顯式設置作爲@Stefan用prototype指示的新實例的作用域。