最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于XML配置Spring的自動(dòng)裝配過(guò)程解析

 更新時(shí)間:2019年10月19日 14:13:29   作者:請(qǐng)叫我小老弟  
這篇文章主要介紹了基于XML配置Spring的自動(dòng)裝配過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一、了解Spring自動(dòng)裝配的方式

采用傳統(tǒng)的XML方式配置Bean組件的關(guān)鍵代碼如下所示

<bean id="userMapper" class="edu.cn.dao.UserMapperImpl">
  <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>

<bean id="userService" class="edu.cn.dao.UserServiceImpl">
  <property name="userMapper" ref="userMapper"/>
</bean>

我們通過(guò)<property>標(biāo)簽為Bean的屬性注入所需的值,當(dāng)需要維護(hù)的Bean組件及需要注入的屬性更多時(shí),勢(shì)必會(huì)增加配置的工作量。這時(shí)可以使用自動(dòng)裝配。

二、為每個(gè)Bean組件指定自動(dòng)裝配的方式

使用自動(dòng)裝配修改配置代碼如下

<bean id="userMapper" class="edu.cn.dao.UserMapperImpl" autowire="byName"/>

<bean id="userService" class="edu.cn.dao.UserServiceImpl" autowire="byName"/>

通過(guò)設(shè)置<bean>元素的autowire屬性指定自動(dòng)裝配,代替了通過(guò)<property>標(biāo)簽顯示指定Bean的依賴(lài)關(guān)系。由BeanFactory檢查XML配置文件的內(nèi)容,為Bean自動(dòng)注入依賴(lài)關(guān)系。

Spring提供了多種自動(dòng)裝配方式,autowire屬性常用的取值如下所示

  • no       不使用自動(dòng)裝配。Bean依賴(lài)關(guān)系必須通過(guò)property元素定義
  • byType    根據(jù)屬性類(lèi)型自動(dòng)裝配。BeanFactory查找容器中的全部Bean,如果正好有一個(gè)與依賴(lài)屬性類(lèi)型相同的Bean,就自動(dòng)裝配這個(gè)屬性;如果有多個(gè)這樣的Bean,Spring無(wú)法決定注入哪個(gè)Bean,就拋出一個(gè)致命異常;如果沒(méi)有匹配的Bean,就什么都不會(huì)發(fā)生,屬性不會(huì)被設(shè)置
  • byName    根據(jù)屬性名自動(dòng)裝配。BeanFactory查找容器中的全部Bean,找出id與屬性的setter方法入?yún)⑵ヅ涞腂ean。找到即自動(dòng)注入,否則什么都不做
  • constructor  與byType的方式類(lèi)似,不同之處在于它應(yīng)用于構(gòu)造器參數(shù)。如果在容器中沒(méi)有找到與構(gòu)造器參數(shù)類(lèi)型一致的Bean,那么將會(huì)拋出異常

在Spring配置文件中通過(guò)<bean>元素的autowire屬性可以實(shí)現(xiàn)自動(dòng)裝配。但是,如果要配置的Bean很多,每個(gè)Bean都配置autowire屬性也會(huì)很繁瑣,可不可以統(tǒng)一設(shè)置自動(dòng)注入而不必分別配置每個(gè)Bean呢?

三、設(shè)置全局自動(dòng)裝配

<beans>元素提供了default-autowire屬性??梢允褂蒙厦媪谐龅膶傩灾禐?lt;beeas>設(shè)置default-autowire屬性以影響全局。

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="  
      http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
    default-autowire="byName">
  
</beans>

在<beans>節(jié)點(diǎn)上設(shè)置default-autowired時(shí),依然可以為<bean>節(jié)點(diǎn)設(shè)置autowire屬性。這時(shí)該<bean>節(jié)點(diǎn)上的自動(dòng)裝配設(shè)置將覆蓋全局設(shè)置,成為該Bean的自動(dòng)裝配策略。

對(duì)于大型的應(yīng)用,不鼓勵(lì)使用自動(dòng)裝配。雖然使用自動(dòng)裝配可以減少配置工作量,但也大大降低了依賴(lài)關(guān)系的清晰性和透明性。依賴(lài)關(guān)系的裝配僅依賴(lài)于源文件的屬性名或類(lèi)型,導(dǎo)致Bean和Bean之間的耦合降低到代碼層次,不利于高層次解耦合。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

江陵县| 广宗县| 北流市| 南宫市| 宁德市| 冕宁县| 于田县| 吴忠市| 平山县| 屏东县| 嘉义县| 井研县| 临海市| 诸暨市| 安新县| 三河市| 织金县| 郑州市| 晋城| 绵竹市| 晋江市| 新沂市| 绥阳县| 闽侯县| 芒康县| 右玉县| 莱州市| 武山县| 清丰县| 江油市| 霍州市| 诸暨市| 蒙阴县| 北辰区| 松溪县| 小金县| 玉林市| 师宗县| 江津市| 从化市| 皋兰县|