国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

Spring(二)Bean入門

2019-11-14 23:40:37
字體:
來源:轉載
供稿:網友
SPRing(二)Bean入門一、BeanFactory介紹1.1、Bean:
  • 在Spring技術中是基于組件
  • 最基本了是最常用的單元
  • 其實實例保存在Spring的容器當中

Bean通常被定義在配置文件當中,Bean實例化由Spring的Ioc容器進行管理,Bean的實例可以通過Beanfactory進行訪問,實際上大部分J2EE應用,Bean是通過applicationContext來訪問的,ApplicationContext是BeanFactory的子接口,功能要比BeanFactory強大許多

1.2、BeanFactory作用
  • 配置、創(chuàng)建以及管理Bean對象
  • 維持Bean對象之間的依賴關系
  • 負責Bean對象的生命周期

BeanFactory常用方法:

  • containsBean(String beanname)
  • Object getBean(String beanName)

通常使用xmlBeanFactory類來實現(xiàn)

1.3、ApplicationContext
  • 讀取Bean定義文件
  • 維護Bean之間的依賴關系
  • 國際化的支持
  • 資源文件的讀取getRource()方法可以輕松讀取Rource對象
  • 事件傳播
  • 多配置文件加載

二、Bean定義2.1、基本組成

配置文件

  • <beans/>是Sring配置文件的根節(jié)點
  • 一個<beans/>節(jié)點里面可以有多個<bean>節(jié)點

定義<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)建Bean

Bean的命名:

按照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
  • 用到Value元素
  • XML解析器以String類型解析出數(shù)據(jù)

如果屬性不是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的作用域
  • singleton:(單實例模式)spring容器只會存在一個共享的bean實例,并且所有針對該bean的請求只會返回同一個bean實例。
  • propertype(no-singleton):對每一次針對該bean的請求都會生成一個新的bean實例。 相當于java中的new 操作。定義為propertype的bean其生命周期很長,不易回收,通常要額外的處理。
  • request:針對每一次的http請求都會產生一個新的bean實例,Bean僅在當前的http request范圍內有效
  • session:針對每一次的http請求都會產生一個新的bean實例,Bean僅在當前的http session范圍內有效
五、Bean管理生命周期5.1、Bean的生命周期

5.2、生命周期管理

兩個時機

Spring可以管理實例化bean之間以及銷毀之前的行為

注入依賴關系之后:

  • 使用init-method屬性:通過指定init-method屬性,確定某個方法應該在Bean依賴關系結束之后執(zhí)行。這種方式無需要將代碼與Spring的接口耦合在一起代碼污染極小。通常在bean當中進行方法定義如init()方法,然后在配置文件Bean元素中加入init-method屬性來實現(xiàn)這個過程。
  • 實現(xiàn)InnitializingBean接口:這種方式無須指明init-method屬性,當窗口依賴注入以后,會自動調用afterPropertiesSet方法,它和init-method執(zhí)行效果一樣,但這種方式屬于侵入性的代碼設計不推薦使用

銷毀Bean之前:

  • destroy-method:用于在執(zhí)行Bean銷毀之前所執(zhí)行的方法,這種方式和init-method一樣無壓需要代碼與Spring的接口耦合在一起代碼污染極小。在bean中加入destory-method屬性和實現(xiàn)這個過程
  • 實現(xiàn)DisposeableBean接口:無需要指明destory-method屬性,當容器依賴注入以后,會自動調用destroty方法,屬于侵入性代碼設計不推薦使用
六、Bean的繼承

Bean的繼承:

什么是Bean繼承呢?繼承是指子bean可以從父bean繼承配置信息,也可以覆蓋特定的配置信息,或者在父bean的基礎之上加入新的配置信息,其實質類似于java中的子類與父類的繼承關系,利用繼承可以節(jié)省很多配置工作,在實際的項目應用中,共有的配置會配置成


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 惠安县| 渭南市| 镇沅| 淮北市| 吉水县| 民丰县| 同德县| 北碚区| 韶山市| 社旗县| 达日县| 泰州市| 花莲县| 重庆市| 澄迈县| 小金县| 土默特右旗| 手机| 京山县| 汕尾市| 朝阳县| 闸北区| 栾城县| 湟源县| 台中市| 彭阳县| 重庆市| 宕昌县| 平乡县| 永靖县| 平邑县| 华宁县| 石城县| 沧源| 南汇区| 紫云| 沁水县| 甘德县| 胶州市| 蚌埠市| 安岳县|