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,興許還能提高一點點性能。
相關文章
相關標籤/搜索