struts+spring action应配置为scope="prototype"
2016-06-23 11:00
405 查看
<bean id="personAction"
scope="prototype"class="quickstart.action.PersonAction">
<constructor-arg ref="personService" />
</bean>
在配置文件中,bean默认是单例模式,应用服务器启动后就会立即创建bean,以后就可以重复使用。
这带来一个问题,bean的全局变量被赋值以后,在下一次使用时会把值带过去。也就是说,bean是有状态的。
在web状态下,请求是多线程的,全局变量可能会被不同的线程修改,尤其在并发时会带来意想不到的bug。
而在开发时,访问量很小,不存在并发、多线程的问题,程序员极有可能会忽视这个问题。
所以在配置action bean时,应使用scope="prototype",为每一次request创建一个新的action实例。这
符合struts2的要求,struts2为每一个r
b56f
equest创建一个新的action实例。当request结束,bean就会被jvm
销毁,作为垃圾收回。
当然,也可以设置scope="session",也能避免web中action的并发问题,只为当前用户创建一次bean,直至
session消失。在这种情况下,对当前用户而言,bean是有状态的。好处就是少创建bean的实例,有那么一
点点性能的提升
应用场景:
1.
多数情况下应使用prototype
2.
若用户不多,且频繁操作(频繁使用action),硬件一般,可以考虑session,兴许还能提升一点点性能。
来自 <http://www.cnblogs.com/JemBai/archive/2010/11/10/1873954.html>
scope="prototype"class="quickstart.action.PersonAction">
<constructor-arg ref="personService" />
</bean>
在配置文件中,bean默认是单例模式,应用服务器启动后就会立即创建bean,以后就可以重复使用。
这带来一个问题,bean的全局变量被赋值以后,在下一次使用时会把值带过去。也就是说,bean是有状态的。
在web状态下,请求是多线程的,全局变量可能会被不同的线程修改,尤其在并发时会带来意想不到的bug。
而在开发时,访问量很小,不存在并发、多线程的问题,程序员极有可能会忽视这个问题。
所以在配置action bean时,应使用scope="prototype",为每一次request创建一个新的action实例。这
符合struts2的要求,struts2为每一个r
b56f
equest创建一个新的action实例。当request结束,bean就会被jvm
销毁,作为垃圾收回。
当然,也可以设置scope="session",也能避免web中action的并发问题,只为当前用户创建一次bean,直至
session消失。在这种情况下,对当前用户而言,bean是有状态的。好处就是少创建bean的实例,有那么一
点点性能的提升
应用场景:
1.
多数情况下应使用prototype
2.
若用户不多,且频繁操作(频繁使用action),硬件一般,可以考虑session,兴许还能提升一点点性能。
来自 <http://www.cnblogs.com/JemBai/archive/2010/11/10/1873954.html>
相关文章推荐
- eclipse项目如何迁移到AndroidStudio中(图文说明)
- struts2 :Unable to load configuration. ……struts-default.xml:46:178异常解决
- 深入浅出RxJava(二:操作符)
- eclipse内存溢出问题解决方案
- 深入浅出RxJava(一:基础篇)
- Java设计模式之--迭代器模式(Iterator)
- Java基础3(公司学习)
- Java包的静态导入import static和import的区别
- Struts2中的ModelDriven机制及其运用
- Struts2如何传值到jsp页面
- SpringMVC返回json数据的三种方式
- Spring mvc 自带的以流形式提供下载方法
- java自定义注解
- Spring加载resource时classpath*:与classpath:的区别
- java多线程--线程休眠
- springmvc入门基础之注解和参数传递
- 【SpringMVC】<context:include-filter>和<context:exclude-filter>使用时要注意的地方
- JAVA线程万年历(阳历+阴历+节日+时间)
- spring 3中新增的@value注解
- spring mvc 请求转发和重定向