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

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Spring(二)Bean入門

2019-11-14 23:42:38
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
SPRing(二)Bean入門

原文出自:http://m.survivalescaperooms.com/liunanjava/p/4399387.html

一、BeanFactory介紹1.1、Bean:
  • 在Spring技術(shù)中是基于組件
  • 最基本的是最常用的單元
  • 其實(shí)實(shí)例保存在Spring的容器當(dāng)中

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作用
  • 配置、創(chuàng)建以及管理Bean對(duì)象
  • 維持Bean對(duì)象之間的依賴關(guān)系
  • 負(fù)責(zé)Bean對(duì)象的生命周期

BeanFactory常用方法:

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

通常使用xmlBeanFactory類來(lái)實(shí)現(xiàn)

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

二、Bean定義2.1、基本組成

配置文件

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

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

Bean的命名:

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

如果屬性不是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:

復(fù)制代碼
<bean id="test" class="com.pb.test">        <property name="lists">        <list>        <value>1</value>        <value>2</value>        <value>3</value>        </list>        </property>    </bean>
復(fù)制代碼

Map:

復(fù)制代碼
<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>
復(fù)制代碼

props:

復(fù)制代碼
<bean id="test" class="com.pb.test"><property name="props"><props><prop key="key1">value1</prop><prop key="key2">value2</prop></props></property></bean>
復(fù)制代碼

set:

復(fù)制代碼
 < property  name ="interest" >                 < set >                     < value > 唱歌 </ value >                     < value > 跳舞 </ value >                     < value > 書法 </ value >                 </ set >        </ property >    
復(fù)制代碼

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

5.2、生命周期管理

兩個(gè)時(shí)機(jī)

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

注入依賴關(guān)系之后:

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

銷毀Bean之前:

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

Bean的繼承:

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


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宝清县| 桑日县| 盐池县| 阳高县| 南昌市| 海安县| 正定县| 化州市| 荆州市| 阳原县| 虞城县| 新蔡县| 江都市| 承德县| 理塘县| 兖州市| 建瓯市| 阿瓦提县| 宜宾县| 阳信县| 任丘市| 刚察县| 海阳市| 汉沽区| 苍南县| 石门县| 木里| 大安市| 凤翔县| 石城县| 图们市| 北宁市| 隆德县| 鹰潭市| 皋兰县| 敖汉旗| 蓬莱市| 东海县| 盖州市| 油尖旺区| 楚雄市|