spring中Bean的作用域

2021-09-24 09:37:38 字數 1512 閱讀 5739

singleton作用域

scope=prototype:每訪問一次,獲取新的物件的例項

在每個spring ioc容器中乙個bean定義只有乙個物件例項。

預設情況下會在容器啟動時初始化bean,但我們可以指定bean節點的

lazy-init=「true」來延遲初始化bean,這時候,只有第一次獲取bean會才初

始化bean。

如:如果想對所有bean都應用延遲初始化,可以在根節點beans設定defaultlazy-init=「true「,如下:

.prototype作用域

scope=singleton:訪問多次,獲取的是同乙個例項

每次從容器獲取bean都是新的物件。

後期:應用: dao層,service層,controller層,如果類中沒有定義共享的公共變數,那麼都可以定義成單例模式

. request作用域

request作用域

考慮下面bean定義:

針對每次http請求,spring容器會根據loginaction bean定義建立乙個全新的loginaction bean例項,且該loginaction bean例項僅在當前http request內有效,因此可以根據需要放心的更改所建例項的內部狀態,而其他請求中根據loginaction bean定義建立的例項,將不會看到這些特定於某個請求的狀態變化。當處理請求結束,request作用域的bean例項將被銷毀

. session 作用域:

考慮下面bean定義:

針對某個http session,spring容器會根據userpreferences bean定義建立乙個全新的userpreferences bean例項,且該userpreferencesbean僅在當前http session內有效。與request作用域一樣,你可以根

據需要放心的更改所建立例項的內部狀態,而別的http session中根據userpreferences建立的例項,將不會看到這些特定於某個http session的狀態變化。當http session最終被廢棄的時候,在該httpsession作用域內的bean也會被廢棄掉

. global session

要使用request、session和 global session作用域的bean(即具有web作用域的bean),在開始設定bean定義之前,還要做少量的初始配置。singleton和prototype,就不需要這一額外的設定。

在目前的情況下,根據你的特定servlet環境,有多種方法來完成這一初始設定。如果你使用的是servlet 2.4及以上的web容器,那麼你僅需要在web應用的xml宣告檔案web.xml中增加下述contextlistener即可:

Spring中Bean的作用域

bean作用域 作用域描述 singleton 在每個spring ioc容器中乙個bean定義對應乙個物件例項。整個容器中只有該bean的唯一例項 prototype 乙個bean定義對應多個物件例項。request session global session 因為這樣在配置中的任何錯誤就會即刻...

spring中bean的作用域

如何使用spring的作用域 這裡的scope就是用來配置spring bean的作用域,它標識bean的作用域。在spring2.0之前bean只有2種作用域即 singleton 單例 non singleton 也稱prototype spring2.0以後,增加了session reques...

Spring中bean的作用域

1 singleton作用域 當乙個bean的作用域設定為singleton,spring ioc容器只會建立該bean定義的唯一例項。2 prototype prototype作用域部署的bean,每一次請求都會產生乙個新的bean例項,相當與乙個new的操作。3 request request表...