spring scope="prototype", scope="session" struts+spring action应配置为scope="prototype"

转自: http://www.cnblogs.com/JemBai/archive/2010/11/10/1873954.html  html

 

struts+spring action应配置为scope="prototype"

<bean id="personAction" scope="prototype" class="quickstart.action.PersonAction">
<constructor-arg ref="personService" />
</bean>
可是对那些Dao的实现类推介scope=“singleton” ,由于这些类没有状态,用singleton只需维护一个实例,显然性能高一些。

在配置文件中,bean默认是单例模式,应用服务器启动后就会当即建立bean,之后就能够重复使用。
这带来一个问题,bean的全局变量被赋值之后,在下一次使用时会把值带过去。也就是说,bean是有状态的。
在web状态下,请求是多线程的,全局变量可能会被不一样的线程修改,尤为在并发时会带来意想不到的bug。
而在开发时,访问量很小,不存在并发、多线程的问题,程序员极有可能会忽视这个问题。
因此在配置action bean时,应使用scope="prototype",为每一次request建立一个新的action实例。这
符合struts2的要求,struts2为每个request建立一个新的action实例。当request结束,bean就会被jvm
销毁,做为垃圾收回。
固然,也能够设置scope="session",也能避免web中action的并发问题,只为当前用户建立一次bean,直至
session消失。在这种状况下,对当前用户而言,bean是有状态的。好处就是少建立bean的实例,有那么一
点点性能的提高
应用场景:    1. 多数状况下应使用prototype    2. 若用户很少,且频繁操做(频繁使用action),硬件通常,能够考虑session,兴许还能提高一点点性能。
相关文章
相关标签/搜索