Spring Bean 的作用域

2022-07-03 13:24:12 字數 2089 閱讀 2285

singleton作用域(預設)

當乙個bean的作用域為singleton,那麼spring ioc容器中只會存在乙個共享的bean例項,並且所有對bean的請求,只要id與該bean定義相匹配,則只會返回bean的同一例項。也就是說,當把乙個bean定義設定為singleton作用域時,

spring ioc容器只會建立該bean定義的唯一例項。這個單一例項會被儲存到單例快取中,並且所有針對該bean的後續請求和引用都將返回被快取的物件例項。

假如在單個spring容器內定義了某個指定class的bean,那麼spring容器將會建立乙個且僅有乙個由該bean定義知道的類例項。singleton作用域是spring中的預設作用域。要在xml中將bean定義成singleton。其配置:

<

bean 

id="userdaoimpl"

class

="com.hujuan.dao.impl.userdaoimpl"

scope

="singleton"

>

bean

>

@test

public void test()

結果:

prototype作用域

prototype作用域的bean會導致在每次對該bean請求(將其注入到另乙個bean中,或者以程式的方式呼叫容器的getbean()方法)時都會建立乙個新的bean例項

,根據經驗,對有狀態的bean應該使用prototype作用域,而對無狀態的bean則應該使用singleton作用域,要在xml中將bean定義成prototype,其配置:

request 作用域

<

bean 

id="userdaoimpl"

class

="com.hujuan.dao.impl.userdaoimpl"

scope

="request"

>

bean

>

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

session作用域

<

bean 

id="userdaoimpl"

class

="com.hujuan.dao.impl.userdaoimpl"

scope

="session"

>

bean

>

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

sessison最終被廢棄的時候,在該http session作用域內的bean也會被廢棄掉。

Spring Bean的作用域

bean的作用域,常用的有兩種,單例singleton 多例prototype 預設情況下,bean都是單例的singleton。在容器初始化的時候就被建立,就這麼乙份。1 單例模式 例如 測試 package com.lynn.spring.test import static org.junit...

Spring bean的作用域

spring框架中,bean 的作用域有如下五種 1.單例 每個spring的ioc容器返回來乙個bean例項 框架預設 2.原型 當每次請求時候都返回來乙個bean例項 3.請求 每個http請求返回來乙個bean例項 4.會話 每個http會話返回來乙個bean例項 5.全域性會話 返回全域性會...

Spring Bean的作用域

在xml檔案中配置bean時,我們可以通過scope為bean配置指定的作用域。bean的作用域分為五種 說明 singleton 單例模式,乙個bean容器中只存在乙個bean例項 prototype 原型模式,每次請求都會產生乙個新的bean例項 request 每次http請求會產生乙個新的b...