1.id
bean的唯一標識,
2.class
類的完全限定名,
3.parent
父類bean定義的名字。
如果沒有任何聲明,會使用父bean,但是也可以重寫父類。重寫父類時,子bean 必須與父bean 兼容,也就是說,
接受父類的屬性值和構造器聲明的值。
子bean會繼承父bean的構造器聲明的值,屬性值,並且重寫父bean的方法。如果init方法,destroy方法已聲明,
他們會覆蓋父bean相應的設置。
保留的設置會直接從子bean獲取,包括depends on,autowire mode,scope,lazy init.
4.abstract
聲明bean是否是抽象的,決定該類是否會實例化。默認是false。
注意:abstract屬性不會被子bean繼承,所以,abstract為true時需要對每個bean顯示聲明。
5.lazy-init
決定是否延遲實例化,如果為false,則啟動時會立即實例化單例模式的bean.默認是false。
注意:lazy-init屬性不會被子bean繼承。
6.autowire
決定是否自動裝配bean的屬性。
autowire有4中模式:
- "no"
Spring默認的模式。bean的引用必須在XML文件中通過<ref/>元素或ref屬性顯示定義。
spring推薦使用的模式,這樣可以使文檔更清晰明確。
- "byName"
通過屬性名使用自動裝配。如果一個Cat類擁有一個dog屬性,那么Spring會根據名字dog
去尋找bean,如果沒有找到bean,則不會自動裝配。
- "byType"
如果Spring容器只有該屬性類型的一個bean,會自動裝配。當有多個該屬性類型的bean時
會報錯。如果沒有,則不會自動裝配。
- "constructor"
針對構造器引用,和byType類似。
注意:autowire屬性不會被子bean繼承。
7.depends-on
該bean初始化時依賴的其他bean的名字,bean工廠確保其他bean在該bean之前完成初始化。
注意:依賴項一般通過bean屬性或構造器聲明,這個屬性對其他依賴(如靜態類或啟動階段數據庫的准備)是必要的。
注意:depends-on屬性不會被子bean繼承。
8.scope
scope屬性值有四種: singleton,prototype,request,session
singleton:單例模式,默認選項
prototype:非單例模式
request:對於web應用,每一個請求產生一個新的實例
session:對於web應用,一個session產生一個實例
本人水平有限,如果有誤,還請指正。
還有幾個選項,需要請自行查看文檔。
9.autowire-candidate
10.primary
11.init-method
12.destroy-method
13.factory-method
14.factory-bean