首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts2与spring调整时bean作用域scope

2012-09-11 
struts2与spring整合时bean作用域scopestruts2跟spring整合的时候bean idcarModelAction scopeproto

struts2与spring整合时bean作用域scope
struts2跟spring整合的时候
   <bean id="carModelAction" scope="prototype"> 
        <property name="voteDAO" ref="voteDAO" />
        <dwr:remote javascript="carModelAction"></dwr:remote>         
     </bean>
spring中的bean节点默认是singleton项目中的增删改查只针对一个action。
    当应用struts2的时候若bean节点不使用prototype会使线程不安全出现不可预知的错误。比如有两个action。
userAction:

    public class userAction {   private String username;    private String pass;    public String check(String code){String result = "ok";return result;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPass() {return pass;}public void setPass(String pass) {this.pass = pass;}}

puserAction:
 public class puserAction {    private String username;    private String pass;    public String check(String code){String result = "ok";return result;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPass() {return pass;}public void setPass(String pass) {this.pass = pass;}}

若bean节点scope不是prototype会造成usename和pass参数的覆盖(应该属于线程泄露吧)造成不可预知的CRUD后果。


  顺便提一下struts与struts2这方面处理时的不同。struts与spring整合采用单例模式只创建一个action  那他为什么不会出现像struts2那样的错误呢。因为struts利用actionForm保证了form中参数的唯一性。一个action对应一个相应的actionForm,但是struts2没有啊他已经取消了actionForm那种做法采用的action方法与actionForm融为一体。

热点排行