Struts action的单例与多例

        struts 2的Action是多实例的并不是单例,也就是每次请求产生一个Action的对象。缘由是:struts 2的Action中包含数据,例如你在页面填写的数据就会包含在Action的成员变量里面。若是Action是单实例的话,这些数据在多线程的环境下就会相互影响,例如形成别人填写的数据被你看到了。因此Struts2的Action是多例模式的。 spring

     问题出现了,能够让struts2的action变成单例模式么?我在使用spring来生成action的时候,发现生成的action竟然全是单例的。这不是让个人程序默认就跑出bug来么?上个用户提交的信息,若是下个用户没填,竟然跑到上个用户输入的信息去了。 安全

背景 : 多线程

1) Struts2 会对每个请求,产生一个Action的实例来处理. 性能

2) Spring的Ioc容器管理的bean默认是单实例的. spa

首先从数据安全性的问题上考虑,咱们的Action应该保证是多例的,这样才不会出现数据问题。可是若是有的action好比只有admin才能操做,或者某些action,全站公用一个来提升性能,这样的话,就能够使用单例模式。 线程

不过幸亏,Spring的bean能够针对每个设置它的scope,因此,上面的问题就不是问题了。若是用单例,就在spring的action bean配置的时候设置scope="singleton".好吧,问题到此结束。 对象

相关文章
相关标签/搜索