原文出自:http://m.survivalescaperooms.com/liunanjava/p/4399387.html
一、BeanFactory介紹1.1、Bean:Bean通常被定義在配置文件當(dāng)中,Bean實(shí)例化由Spring的Ioc容器進(jìn)行管理,Bean的實(shí)例可以通過(guò) Beanfactory進(jìn)行訪問(wèn),實(shí)際上大部分J2EE應(yīng)用,Bean是通過(guò)applicationContext來(lái)訪問(wèn)的,ApplicationContext是BeanFactory的子接口,功能要比BeanFactory強(qiáng)大許多
1.2、BeanFactory作用BeanFactory常用方法:
通常使用xmlBeanFactory類來(lái)實(shí)現(xiàn)
1.3、ApplicationContext配置文件
定義<bean>節(jié)點(diǎn)時(shí),通常要指定兩個(gè)屬性
id:用來(lái)指明bean的標(biāo)識(shí)符,這個(gè)標(biāo)識(shí)符具有唯一性,Spring對(duì)bean的管理以及bean之間這種依賴關(guān)系都需要這個(gè)屬性
class: 指明該bean的具體實(shí)現(xiàn)類,這里不能是接口(可以是接口實(shí)現(xiàn)類)全路徑包名.類名
Bean在Spring容器中兩種行為(通過(guò)scope來(lái)設(shè)置默認(rèn)不寫為singelton)
singleton:?jiǎn)螌?shí)例模式(默認(rèn),構(gòu)造方法為private),整個(gè)Spring的容器中只有一個(gè)共享實(shí)例存在(singleton)
non-singelton:每次請(qǐng)求該bean,Spring容器都會(huì)新建立一個(gè)bean實(shí)例,然后返回給程序(request,session,prototype)
2.2、創(chuàng)建BeanBean的命名:
按照J(rèn)ava中的命名規(guī)范即可,使用清晰的,描述性的,一致的命名規(guī)范
Bean的命名機(jī)制:
id 當(dāng)在Spring的窗口當(dāng)中,查找某個(gè)Bean對(duì)象時(shí),首先根據(jù)id進(jìn)行查找,將其余作為Bean的默認(rèn)名稱,如果ID屬性不存在,則根據(jù)Name屬性進(jìn)行查找(將其中的第一個(gè)名稱作為默認(rèn)的名稱),如果ID和NAME都不存在根據(jù)類的名稱進(jìn)行查找
id---------->name--------------->類名
<bean id="id1" class="實(shí)現(xiàn)類"></bean><bean name="id1" class="實(shí)現(xiàn)類"></bean><bean class="實(shí)現(xiàn)類"></bean>
Bean的別名:
通過(guò)alias屬性指定:
<alias name="指定關(guān)聯(lián)的Bean的名稱fromname" alias="該關(guān)聯(lián)類的別名的名稱toname"/>2.3、創(chuàng)建Bean步驟
創(chuàng)建XML文件----寫入配置信息---生成Bean類----加入Bean到配置文件
三、Bean注入3.1、基本類型和String如果屬性不是String類型,屬性值會(huì)通過(guò)PropertyEditors轉(zhuǎn)換為其他類型
3.2、注入Bean-ref元素進(jìn)行標(biāo)識(shí)
Ref元素通常有兩個(gè)屬性:
bean:指定不在同一個(gè)XML文件中的bean的id
<bean id="test" class="com.pb.test"><property name="user"><ref bean="其他的bean的id"/></property></bean>
local:指定在同一個(gè)XML文件中的bean的id
<bean id="test" class="com.pb.test"><property name="user"><ref bean="相同的XML文件中的bean的id"/></property></bean>
value和ref的區(qū)別:
使用ref元素,可以讓Spring在部署時(shí)驗(yàn)證依賴的Bean是否真實(shí)存在
使用value元素,進(jìn)行指定僅在創(chuàng)建Bean實(shí)例時(shí)做驗(yàn)證,會(huì)導(dǎo)致錯(cuò)誤的延時(shí)出現(xiàn),而且還會(huì)帶來(lái)額外的類型轉(zhuǎn)制開銷
3.3、集合注入List:

<bean id="test" class="com.pb.test"> <property name="lists"> <list> <value>1</value> <value>2</value> <value>3</value> </list> </property> </bean>

Map:

<bean id="test" class="com.pb.test"> <property name="map"> <map> <entry key="key1"> <value>value1</value> </entry> <entry key="key2"> <value>key2</value> </entry> </map> </property> </bean>

props:

<bean id="test" class="com.pb.test"><property name="props"><props><prop key="key1">value1</prop><prop key="key2">value2</prop></props></property></bean>

set:

< property name ="interest" > < set > < value > 唱歌 </ value > < value > 跳舞 </ value > < value > 書法 </ value > </ set > </ property >
3.4、自動(dòng)綁定通過(guò)autowire屬性來(lái)設(shè)置
no:默認(rèn)的。默認(rèn)為不綁定
byName:根據(jù)屬性名稱自動(dòng)進(jìn)行綁定
byType:根據(jù)屬性類型自動(dòng)進(jìn)行綁定
四、Bean的作用域

兩個(gè)時(shí)機(jī)
Spring可以管理實(shí)例化bean之間以及銷毀之前的行為
注入依賴關(guān)系之后:
銷毀Bean之前:
Bean的繼承:
什么是Bean繼承呢?繼承是指子bean可以從父bean繼承配置信息,也可以覆蓋特定的配置信息,或者在父 bean的基礎(chǔ)之上加入新的配置信息,其實(shí)質(zhì)類似于java中的子類與父類的繼承關(guān)系,利用繼承可以節(jié)省很多配置工作,在實(shí)際的項(xiàng)目應(yīng)用中,共有的配置會(huì) 配置成
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注