spring bean的作用域

Bean的作用域
參考:spring FrameWork官方文檔
spring4.x中官方有7中作用域,如果使用的是applicationContext作為容器的話就只用5中作用域
下面的其中作用域為

spring4.x的七種作用域

下面講解平常使用applicationContext作為容器的中為5中作用域摔握,分別為singleton(單例)祸憋、prototype(原型)贱勃、request、session和global session,5種作用域說明如下:
singleton:單例模式屈张,Spring IoC容器中只會存在一個共享的Bean實例剩胁,無論有多少個Bean引用它诉植,始終指向同一對象。Singleton作用域是Spring中的缺省作用域昵观,也可以顯示的將Bean定義為singleton模式


單例模式

prototype:原型模式晾腔,每次通過Spring容器獲取prototype定義的bean時,容器都將創(chuàng)建一個新的Bean實例啊犬,每個Bean實例都有自己的屬性和狀態(tài)灼擂,而singleton全局只有一個對象。根據(jù)經(jīng)驗觉至,對有狀態(tài)的bean使用prototype作用域剔应,而對無狀態(tài)的bean使用singleton作用域。

原型

request,session,globalSession,application, 和websocket這幾種作用域使用的范圍 web-aware Spring中ApplicationContext接口(例如XmlWebApplicationContext).有效。
在使用下面幾種方式的時候峻贮,需要注意的是除了需要在設(shè)置bean的scope席怪,還需要根據(jù)servlet容器不同來考慮。如果使用了Spring Web MVC 中Spring DispatcherServletor DispatcherPortlet,已經(jīng)設(shè)置好了相應(yīng)的作用域纤控,如果是使用的 Servlet 2.5 web 容器請求不是使Spring的DispatcherServlet(例如使用, JSF或者 Struts)挂捻,需要注冊到監(jiān)聽器中。如果是servlet3.0需要通WebApplicationInitializer接口編程實現(xiàn)船万。當(dāng)然如果更老的容器添加如下配置到web.xml申明使用刻撒。

<web-app>
    ...
    <listener>
        <listener-class>
            org.springframework.web.context.request.RequestContextListener
        </listener-class>
    </listener>
    ...
</web-app>

或者如果使用監(jiān)聽設(shè)置有問題的話也可以使用過濾Spring’s RequestContextFilter, spring的過濾。這個過濾器的映射和你的配置有關(guān)耿导,必要的時候需要做一定的調(diào)整声怔。配置:

<web-app>
    ...
    <filter>
        <filter-name>requestContextFilter</filter-name>
        <filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>requestContextFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    ...
</web-app>
  • DispatcherServlet, RequestContextListener, 和RequestContextFilter 準(zhǔn)確的說所做的事相同,換句話說就是綁定HTTP請求對象到要為該請求服務(wù)的線程中去 碎节。這樣創(chuàng)建的
    bean就是 request- 和session-scoped的作用域捧搞, 提供下一步調(diào)用鏈。

  • 下面幾種作用域提供兩種配置
    request:在一次Http請求中狮荔,容器會返回該Bean的同一實例胎撇。而對不同的Http請求則會產(chǎn)生新的Bean,而且該bean僅在當(dāng)前Http Request內(nèi)有效殖氏。,針對每一次Http請求晚树,Spring容器根據(jù)該bean的定義創(chuàng)建一個全新的實例,且該實例僅在當(dāng)前Http請求內(nèi)有效雅采,而其它請求無法看到當(dāng)前請求中狀態(tài)的變化爵憎,當(dāng)當(dāng)前Http請求結(jié)束,該bean實例也將會被銷毀婚瓜。
<bean id="loginAction" class="com.foo.LoginAction" scope="request"/>
@RequestScope
@Component
public class LoginAction {
    // ...
}

session:在一次Http Session中宝鼓,容器會返回該Bean的同一實例。而對不同的Session請求則會創(chuàng)建新的實例巴刻,該bean實例僅在當(dāng)前Session內(nèi)有效愚铡。
,同Http請求相同,每一次session請求創(chuàng)建新的實例胡陪,而不同的實例之間不共享屬性沥寥,且實例僅在自己的session請求內(nèi)有效,請求結(jié)束柠座,則實例將被銷毀邑雅。

<bean id="userPreferences" class="com.foo.UserPreferences" scope="session"/>
@SessionScope
@Component
public class UserPreferences {
    // ...
}

global Session:在一個全局的Http Session中,容器會返回該Bean的同一個實例妈经,僅在使用portlet context時有效淮野。

<bean id="userPreferences" class="com.foo.UserPreferences" scope="globalSession"/>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末捧书,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子骤星,更是在濱河造成了極大的恐慌鳄厌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妈踊,死亡現(xiàn)場離奇詭異,居然都是意外死亡泪漂,警方通過查閱死者的電腦和手機廊营,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萝勤,“玉大人露筒,你說我怎么就攤上這事〉凶浚” “怎么了慎式?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長趟径。 經(jīng)常有香客問我瘪吏,道長,這世上最難降的妖魔是什么蜗巧? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任掌眠,我火速辦了婚禮,結(jié)果婚禮上幕屹,老公的妹妹穿的比我還像新娘蓝丙。我一直安慰自己,他們只是感情好望拖,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布渺尘。 她就那樣靜靜地躺著,像睡著了一般说敏。 火紅的嫁衣襯著肌膚如雪鸥跟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天像云,我揣著相機與錄音锌雀,去河邊找鬼。 笑死迅诬,一個胖子當(dāng)著我的面吹牛腋逆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播侈贷,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼惩歉,長吁一口氣:“原來是場噩夢啊……” “哼等脂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起撑蚌,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤上遥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后争涌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體粉楚,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年亮垫,在試婚紗的時候發(fā)現(xiàn)自己被綠了模软。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡饮潦,死狀恐怖燃异,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情继蜡,我是刑警寧澤回俐,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站稀并,受9級特大地震影響仅颇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜碘举,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一灵莲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧殴俱,春花似錦政冻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至李丰,卻和暖如春苦锨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背趴泌。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工舟舒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嗜憔。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓秃励,卻偏偏與公主長得像,于是被迫代替她去往敵國和親吉捶。 傳聞我的和親對象是個殘疾皇子夺鲜,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容