Spring中Bean的基本概念

2022-09-11 07:18:08 字數 1508 閱讀 1650

一、bean的定義

元素是spring配置檔案的根元素

,元素可以包含多個子元素,每個元素可以定義乙個bean例項,每乙個bean對應spring容器裡的乙個j**a例項定義bean時通常需要指定兩個屬性。

id:確定該bean的唯一識別符號,容器對bean管理、訪問、以及該bean的依賴關係,都通過該屬性完成。bean的id屬性在spring容器中是唯一的。

class:指定該bean的具體實現類。注意這裡不能使介面。通常情況下,spring會直接使用new關鍵字建立該bean的例項,因此,這裡必須提供bean實現類的類名。

spring容器集中管理bean的例項化,bean例項可以通過beanfactory的getbean(string  beanid)方法得到。beanfactory是乙個工廠,程式只需要獲取beanfactory引用,即可獲得spring容器管理全部例項的引用。程式不需要與具體例項的實現過程耦合。大部分j**a ee應用裡,應用在啟動時,會自動建立spring容器,元件之間直接以依賴注入的方式耦合,甚至無須主動訪問spring容器本身。

當我們在配置檔案中通過方法配置乙個bean時,這樣就需要該bean實現類中必須有乙個無參構造器。

二、容器中bean的作用域

當通過spring容器建立乙個bean例項時,不僅可以完成bean例項的例項化,還可以為bean指定特定的作用域。

spring支援5種作用域:

singleton:單例模式。在整個springioc容器中,使用singleton定義的bean將只有乙個例項,這是預設的配置。

prototype:原型模式。每次通過容器的getbean方法獲取prototype定義的bean時,都將產生乙個新的bean例項。

request:對於每次http請求,使用request定義的bean都將產生乙個新的例項,即每次http請求都會產生不同的bean例項。當然只有在web應用中使用spring時,該作用域才真正有效。

session:對於每次httpsession,使用session定義的bean都將產生乙個新的例項時,即每次http session都將產生不同的bean例項。同http一樣,只有在web應用才會有效。

global session:每個全域性的httpsession對應乙個bean例項。僅在portlet context的時候才有效。

比較常用的singleton和prototype。如果乙個bean例項被設定為singleton,那麼每次請求該bean時都會獲得相同的例項。容器負責跟蹤bean例項的狀態,負責維護bean例項的生命週期行為。如果乙個bean例項被設定為prototype,那麼每次請求該di的bean,spring都會建立乙個新的bean例項返回給程式,在這種情況下,spring容器僅僅使用new關鍵字建立bean例項,一旦建立成功,容器將不會再跟蹤例項,也不會維護bean例項的狀態。

如果我們不指定bean的作用域,則spring會預設使用singleton作用域。設定bean的作用域是通過scope屬性來指定。可以接受singleton、prototype、request、session、global session 5個值。

Spring中bean的基本xml配置

1 新增乙個bean 以下是乙個例子 下面是對該標籤裡各個屬性的解釋 id 標識該bean的名稱,通過factory.getbean id 來獲得例項。class 該bean的類路徑。singleton 預設為true,即單例項模式,每次getbean id 時獲取的都是同 乙個例項,如果設定為fa...

Spring中bean的基本xml配置

基本的xml配置包括如下幾個方面 1 新增乙個bean 2 設定bean的屬性 2.1 手動設定 2.1.1 通過setter方法 2.1.2 通過構造器 2.2 自動設定 其 中bean的屬性即為bean裡的成員變數,這些成員變數值的獲得可以通過setter方法,例如某個屬性為name,則sett...

Spring中bean的基本xml配置

基本的xml配置包括如下幾個方面 1 新增乙個bean 2 設定bean的屬性 2.1 手動設定 2.1.1 通過setter方法 2.1.2 通過構造器 2.2 自動設定 其中bean的屬性即為bean裡的成員變數,這些成員變數值的獲得可以通過setter方法,例如某個屬性為name,則sette...