spring整合struts将action作为接口的时候,发现如果用多线程去访问接口的时候有时候会出现两个接口返回的数据不对,例如我访问了getUser和getRole接口。他们应该分别返回
getUser:
{un:admin,id:1}
getRole:
{id:2,name:xx}
但是有时候可能会是这种情况:
getUser:
getRole:
{un:admin,id:1}{id:2,name:xx}
两个东西重复了。
这个应该是spring bean实例化的action是一个单例,例如
<bean id="baseInfoAction" class="com.BaseInfoAction" >
<property name="Service" ref="Service" />
</bean>
这样配置一个struts里面的action在spring的默认周期里面是单例的。这个我也没验证过是否是单例的。但是在访问足够频繁的情况下会有可能出现上述情况。
这个时候我能就需要在bean里面设定好非单例的生命周期,例如:
<bean id="baseInfoAction" class="com.BaseInfoAction" scope="prototype">
<property name="Service" ref="Service" />
</bean>
据网上的资料表述这个生命周期的设置是每一次访问都初始化一个action对象。
这个有待验证。但是确实好像不会出先上述的合并现象了。