1. 程式人生 > >Spring4學習筆記二:Bean相關

Spring4學習筆記二:Bean相關

因此 code per cdata 通過 反射機制 特殊符號 cat too

一:Bean的配置形式

基於XML配置:在src目錄下創建 applicationContext.xml 文件,在其中進行配置。

基於註解配置:在創建bean類時,通過註解來註入內容。(這個不好,因為註解也在代碼中,而且過於分散)

二:Bean的尋找方式

通過反射來創建bean:通過bean定義時的全類名,用反射機制來尋找bean元數據,創建對象。【因此:Bean類必須至少有一個無參構造函數

id:容器中該bean對象的唯一標識,可以在容器中其他對象中根據id來調用該對象(例如:Factory對象創建時調用數據庫連接池對象等),也可以在代碼中用ApplicationContext對象.getBean(id)來獲取某個bean對象。如果不指定對象,則默認使用類名作為id。

三:Bean對象的賦值——依賴註入的方式

屬性註入:在配置bean時,通過<property>標簽配置,標簽中name指定屬性名,value指定屬性值,原理是:調用Bean類中的setter方法進行屬性賦值。一個標簽賦值一個屬性。

技術分享圖片
<bean id="bean_id" class="www.ygj0930.bean.Bean">
        <property name="attr1" value="value1"></property>
        <property name="attr2" value="value2"></property>
        <property name="attr3" value="value3"></property>
        ......
</bean>
技術分享圖片

構造註入:在配置bean時,通過<constructor-arg>標簽為構造函數配置參數值,標簽中 value指定參數值,index指定是對應哪個參數,type說明該參數類型。一個標簽賦值一個參數。

技術分享圖片
<bean id="bean_id" class="www.ygj0930.bean.Bean">
        <constructor-arg value="val0" index="0" type="java.lang.XX"></constructor-arg>
        <constructor-arg value="val1" index="1" type="java.lang.XX"></constructor-arg>
        <constructor-arg value="val2" index="2" type="java.lang.XX"></constructor-arg>
        ........
    </bean>
技術分享圖片

屬性值、參數值細節:
1)如果屬性值、參數值中包含特殊符號,則需要把屬性值、參數值用C-Data括起來,即 <![CDATA[值]]> 形式來配置,都在特殊符號在xml中會被解釋,從而報錯。

2)屬性、參數是基本數據類型、封裝數據類型:可以使用 value="字面量" 來註入。

3)屬性、參數是其他bean類型:

3.1)引用外部bean:如果該屬性、參數變量值是容器中已有bean,則使用 ref="引用的bean_id" 來註入。

3.2)內部bean:如果屬性、參數變量是當前bean中內部創建的一個新的bean,則使用<property>標簽來配置,在標簽之間在內嵌一個<bean>標簽,並且以構造註入的方式來創建內部bean。

<bean id="外部bean">
        <property name="內部bean的屬性名">
            <bean class="內部bean的全類名"> //內部bean,沒有id,不能被外部其他bean引用
               <constructor-arg value="參數值" index="下標" type="參數類型"></constructor-arg>
               ......
            </bean>
        </property>
<property name="引用外部bean的屬性名" ref="其他bean的ID"></property>
...... </bean>

構造註入的內部bean參數值創建方法同上,標簽換成constructor-arg。

四:級聯屬性配置

如果一個bean2中引用了另一個bean1作為成員變量,那麽我們可以在配置bean2時,通過bean2的成員變量來為引用的bean1賦值或者修改bean1的變量值。

Spring4學習筆記二:Bean相關