Spring中Bean的作用域

2021-10-05 14:51:52 字數 1820 閱讀 2447

在spring中,那些組成應用程式的主體及由spring ioc容器所管理的物件,被稱之為bean。簡單地講,bean就是由ioc容器初始化、裝配及管理的物件 .

singleton

當乙個bean的作用域為singleton,那麼spring ioc容器中只會存在乙個共享的bean例項,並且所有對bean的請求,只要id與該bean定義相匹配,則只會返回bean的同一例項。singleton是單例型別,就是在建立起容器時就同時自動建立了乙個bean的物件,不管你是否使用,他都存在了,每次獲取到的物件都是同乙個物件。注意,singleton作用域是spring中的預設作用域。要在xml中將bean定義成singleton,可以這樣配置:

"serviceimpl"

class

="cn.csdn.service.serviceimpl" scope=

"singleton"

>

prototype

當乙個bean的作用域為prototype,表示乙個bean定義對應多個物件例項。prototype作用域的bean會導致在每次對該bean請求(將其注入到另乙個bean中,或者以程式的方式呼叫容器的getbean()方法)時都會建立乙個新的bean例項。prototype是原型型別,它在我們建立容器的時候並沒有例項化,而是當我們獲取bean的時候才會去建立乙個物件,而且我們每次獲取到的物件都不是同乙個物件。根據經驗,對有狀態的bean應該使用prototype作用域,而對無狀態的bean則應該使用singleton作用域。在xml中將bean定義成prototype,可以這樣配置:

"account"

class

="com.foo.defaultaccount" scope=

"prototype"

/>

或者"account"

class

="com.foo.defaultaccount" singleton=

"false"

/>

request
"loginaction"

class

=cn.csdn.loginaction" scope="request"/

>

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

session

"userpreferences"

class

="com.foo.userpreferences" scope=

"session"

/>

針對某個http session,spring容器會根據userpreferences bean定義建立乙個全新的userpreferences bean例項,且該userpreferences bean僅在當前http session內有效。與request作用域一樣,可以根據需要放心的更改所建立例項的內部狀態,而別的http session中根據userpreferences建立的例項,將不會看到這些特定於某個http session的狀態變化。當http session最終被廢棄的時候,在該http session作用域內的bean也會被廢棄掉。

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表...