Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 春天的豆子能活多久?_Java_Spring_Spring Ioc_Spring Rest - Fatal编程技术网

Java 春天的豆子能活多久?

Java 春天的豆子能活多久?,java,spring,spring-ioc,spring-rest,Java,Spring,Spring Ioc,Spring Rest,当我在服务器上运行bean方法的第一个小部分(假设方法a)时,一切似乎都正常,但是当在这个carrierRESTWS bean(假设方法B)上第二次运行任何请求时,所使用的dao就是同一个carrierDAO实例。如何避免出现此问题,并在每次调用此carrierRESTWS bean时使注入使用dao的新实例 xml文件内的bean配置: <bean id="carrierRESTWS" class="ar.com.anovo.controllers.rest.CarrierRESTWS"

当我在服务器上运行bean方法的第一个小部分(假设方法a)时,一切似乎都正常,但是当在这个carrierRESTWS bean(假设方法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>

您的bean是单例bean,因此它们的寿命与Spring容器的寿命一样长,这基本上意味着只要您的程序在运行,这也意味着只要您的webapp在运行,理论上可能是几年

由于您的控制器和DAO类当然已被编码为无状态,并且支持多线程,因此您不应该对单个共享实例有任何问题。

将“carrierDAO”的范围设置为“prototype”:


一旦需要注入,这将创建一个新实例


有关作用域的更多信息可以在中找到。

spring中的默认作用域是
单例
,因此您需要显式设置作用域,以便在@Stefan使用
prototype
指示时每次生成一个新实例,为什么需要非单例DAO?
<bean id="carrierDAO" class="ar.com.anovo.dao.CarrierDAO" scope="prototype" />