Bean通常被定義在配置文件當中,Bean實例化由Spring的Ioc容器進行管理,Bean的實例可以通過Beanfactory進行訪問,實際上大部分J2EE應用,Bean是通過applicationContext來訪問的,ApplicationContext是BeanFactory的子接口,功能要比BeanFactory強大許多
1.2、BeanFactory作用BeanFactory常用方法:
通常使用xmlBeanFactory類來實現(xiàn)
1.3、ApplicationContext配置文件
定義<bean>節(jié)點時,通常要指定兩個屬性
id:用來指明bean的標識符,這個標識符具有唯一性,Spring對bean的管理以及bean之間這種依賴關系都需要這個屬性
class: 指明該bean的具體實現(xiàn)類,這里不能是接口(可以是接口實現(xiàn)類)全路徑包名.類名
Bean在Spring容器中兩種行為(通過scope來設置默認不寫為singelton)
singleton:單實例模式(默認,構造方法為private),整個Spring的容器中只有一個共享實例存在(singleton)
non-singelton:每次請求該bean,Spring容器都會新建立一個bean實例,然后返回給程序(request,session,prototype)
2.2、創(chuàng)建BeanBean的命名:
按照java中的命名規(guī)范即可,使用清晰的,描述性的,一致的命名規(guī)范
Bean的命名機制:
id 當在Spring的窗口當中,查找某個Bean對象時,首先根據(jù)id進行查找,將其余作為Bean的默認名稱,如果ID屬性不存在,則根據(jù)Name屬性進行查找(將其中的第一個名稱作為默認的名稱),如果ID和NAME都不存在根據(jù)類的名稱進行查找
id---------->name--------------->類名
<bean id="id1" class="實現(xiàn)類"></bean><bean name="id1" class="實現(xiàn)類"></bean><bean class="實現(xiàn)類"></bean>
Bean的別名:
通過alias屬性指定:
<alias name="指定關聯(lián)的Bean的名稱fromname" alias="該關聯(lián)類的別名的名稱toname"/>2.3、創(chuàng)建Bean步驟
創(chuàng)建XML文件----寫入配置信息---生成Bean類----加入Bean到配置文件
三、Bean注入3.1、基本類型和String如果屬性不是String類型,屬性值會通過PropertyEditors轉換為其他類型
3.2、注入Bean-ref元素進行標識
Ref元素通常有兩個屬性:
bean:指定不在同一個XML文件中的bean的id
<bean id="test" class="com.pb.test"><property name="user"><ref bean="其他的bean的id"/></property></bean>
local:指定在同一個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在部署時驗證依賴的Bean是否真實存在
使用value元素,進行指定僅在創(chuàng)建Bean實例時做驗證,會導致錯誤的延時出現(xià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、自動綁定
通過autowire屬性來設置
no:默認的。默認為不綁定
byName:根據(jù)屬性名稱自動進行綁定
byType:根據(jù)屬性類型自動進行綁定
四、Bean的作用域

兩個時機
Spring可以管理實例化bean之間以及銷毀之前的行為
注入依賴關系之后:
銷毀Bean之前:
Bean的繼承:
什么是Bean繼承呢?繼承是指子bean可以從父bean繼承配置信息,也可以覆蓋特定的配置信息,或者在父bean的基礎之上加入新的配置信息,其實質類似于java中的子類與父類的繼承關系,利用繼承可以節(jié)省很多配置工作,在實際的項目應用中,共有的配置會配置成
新聞熱點
疑難解答