原創作品,可以轉載,但是請標注出處地址http://www.cnblogs.com/V1haoge/p/5859556.html
1、Bean的配置一般都在XML文件中進行配置
2、Bean相關包為:org.springframework.beans和org.springframework.context
3、spring的Bean管理的實現是依靠大量的反射來實現的。
4、Bean定義配置
4.1 Bean標簽
▶id屬性:用於指定Bean的名稱,在Bean被依賴時使用,在獲取Bean時使用等
▶name屬性:用於指定Bean的別名
▶class屬性:用於指定Bean的來源,即創建要創建的Bean的class類(需要全限定名)
▶singleton屬性:用於指定當前Bean的創建模式,若值為true表示為單例模式,false表示原型模式(prototype)
▶depends-on屬性:用於指定當前Bean的依賴Bean,強制指定的Bean在當前Bean初始化之前先完成初始化
▶init-method屬性:用於指定當前Bean的初始化方法,在Bean實例創建好後,首先會調用其指定名稱的方法
▶destory-method屬性:用於指定當前Bean的銷毀方法,在Bean即將被銷毀之前會自動調用該屬性指定的方法
▶lazy-init屬性:用於指定當前Bean的初始化時間,若值為true表示在初次調用時才會自動創建實例並初始化,false表示在IoC容器創建的時候就會完成創建和初始化
▶autowire屬性:用於指定當前Bean的依賴關系的自動注入方式,其有五個值:
▷byName值:表示通過id名稱來自動匹配;
▷byType值:表示通過class指定的類型來自動裝配;
▷constructor值:表示使用構造函數的參數進行自動裝配(參數的類型匹配);
▷autodetect值:表示自動進行選擇匹配方式,首先進行constructor自動裝配,若不存在構造方法則使用byType方式進行自動裝配;
▷no值:表示不適用自動裝配。
▶dependency-check屬性:用於指定Bean的依賴檢查模式,檢查依賴關系是否完整,與自動裝配合用,其有四個值:
▷simple值:表示針對基本類型、字符串、集合進行依賴檢查
▷object值:表示對引用對象進行依賴檢查
▷all值:表示對基本類型、字符串、集合、引用對象全部進行依賴檢查
▷none值:表示不進行任何依賴檢查,默認情況。
Bean示例:
1 <?xml version=”1.0”encoding=”utf-8”?> 2 <!Doctype beans PUBLIC “-//SPRING//DTD BEAN//EN” 3 “http://www.springframework.org/dtd/spring-beans.dtd”> 4 <beans> 5 <bean id=”helloworld” class=”com.dh.spring.HelloWorld” singleton=”true” depends-on=”date” lazy-init=”false” init-mathod=”init” destory-method=”destory”/> 6 <bean id=”date” class=”java.util.Date”/> 7 </beans>
4.2 property標簽
▶name屬性:用於指定屬性的名稱,與類中的set方法後方的名稱一致
▶value屬性:用於指定該屬性的值,用於指定的值是基本類型、字符串類型
▶ref屬性:用於指定該屬性的值,用於指定的值是引用對象類型(即其他的Bean),ref後面的值為另一個Bean的id
▶value標簽:用於指定屬性的值,類型為基本類型、字符串類型,值為標簽內的文本內容,可以使用null值將屬性的值設置為null
▶ref標簽:用於指定屬性的值,類型為引用對象類型,值為其屬性的值,其屬性有以下三種:
▷local屬性:用於指定依賴本地Bean實例,即同一XML文件中定義的Bean
▷bean屬性:用於指定依賴的Bean實例,可以是不同XML文件中的Bean
▷parent屬性:用於指定依賴的Bean實例,可以是當前BeanFactory或ApplicationContext的父BeanFactory或ApplicationContext中的Bean
以下是針對集合的標簽
▶list標簽:用於聲明該依賴對象為一個list集合,其下用value和ref標簽來指定list中的各值(基本、字符串、對象等)
▷value標簽:用於指定list集合中的值,指定的值為基本類型、字符串類型,值為文本內容
▷ref標簽:用於指定list集合中的引用值,指定的值為其他的對象Bean,其用法與之前property標簽下的ref標簽的用法相同
▶set標簽:用於聲明該依賴對象為一個set集合,其用法與list標簽相同。
▶map標簽:用於聲明該依賴對象為一個map集合,其下用entry標簽來聲明一個鍵值對
▷entry標簽:用於聲明map集合下的一個鍵值對,其下用key屬性指明鍵,value/ref標簽指明值
→key屬性:用於指明鍵值對中的鍵,它一般為字符串
→value標簽:用於指明鍵值對中的值,類型為基本類型、字符串類型
→ref標簽:用於指明鍵值對中的值,類型為引用對象類型,即其他的Bean,其用法同之前的ref標簽
map實例1:
1 <bean id=”helloworld” class=”com.dh.spring.HelloWorld”> 2 <property name=”pname”> 3 <map> 4 <entry key=”mkey1”> 5 <value>mvalue1</value> 6 </entry> 7 <entry key=”mkey2”> 8 <value>mvalue2</value> 9 </entry> 10 </map> 11 </property> 12 </bean>
map實例2:
1 <bean id=”helloworld2” class=”com.dh.spring.HelloWorld2”> 2 <property name=”pname”> 3 <map> 4 <entry key=”mkey1”> 5 <ref bean=”helloworld”/> 6 </entry> 7 </map> 8 </property> 9 </bean>
▶props標簽:用於聲明該依賴對象為一個properties集合,其下用prop標簽來指定屬性的名稱及值(鍵值對)
▷prop標簽:用於設置集合中的一個鍵值對
→key屬性:用於指明鍵值對中的鍵,一般為字符串
→文本內容:用於指明鍵值對中的值,一般為字符串,不用加引號
props實例:
1 <bean id=”helloword” class=”com.dh.spring.HelloWorld”> 2 <property name=”pname”> 3 <props> 4 <prop key=”pkey1”>pvalue1</prop> 5 <prop key=”pkey2”>pvalue2</prop> 6 </props> 7 </property> 8 </bean>
5、Bean的生命周期
Bean的生命周期包括Bean的定義,Bean的初始化,Bean的使用,Bean的銷毀
Bean的定義:一般Bean使用XML文件的方式進行定義,定義的時候將Bean之間的依賴關系和屬性的賦值都進行了定義
Bean的初始化:其實Bean的初始化包括Bean的創建和初始化兩個方法,Bean的創建和初始化一般是同步進行的,Bean在完成創建後直接就會進行初始化操作,創建的時機與Bean的lazy-init屬性的設置有關。
Bean的使用:在web程序運行期間,發生對某一個Bean的調用時,就會使用這個Bean實例,如果使用編碼的方式來獲取Bean同樣也是Bean的使用,Bean的編碼使用方式有三種,第一種是使用BeanWarpper,第二種是使用BeanFactory,第三種就是使用ApplicationContext。
Bean的銷毀:Bean實例在程序退出的時候會進行銷毀,而在銷毀之前會自動調用Bean的destory-method屬性指定名稱的方法。