struts2是不是單例?是否線程安全?

SpringMVC默認是單例的。與Struts2不同,SpringMVC沒有默認處理方法,也就是說SpringMVC是基於方法的開發,都是用形參接收值,一個方法結束參數就銷燬了,多線程訪問都會有一塊內存空間產生,裏面的參數也是不會共用的。由於SpringMVC默認使用了單例,所以Controller類中不適合定義屬性,只要controller中不定義屬性,那麼單例完全是安全的。單例模式可以提高SpringMVC性能,不需要每次相應請求都創建一個對象

與SpringMVC不同,Struts2是基於類的屬性進行發的,定義屬性可以整個類通用。所以Struts2的Action是多實例的並非單例,也就是每次請求產生一個Action的對象。Action類中往往包含了數據屬性,例如在頁面填寫的form表單的字段,Action中有對應的的屬性來綁定頁面form表單字段。顯然如果Action是單實例的話,那麼多線程的環境下就會相互影響,例如造成別人填寫的數據被你看到了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章