4壹士、spring自動(dòng)裝配(spring筆記)

一、根據(jù)名稱自動(dòng)裝配屬性(工程spring_autowire_byName

這種方式一般用在開(kāi)發(fā)階段偿警,用于提供我們的開(kāi)發(fā)效率躏救。我們通過(guò)一個(gè)示例進(jìn)行說(shuō)明。
相關(guān)實(shí)體:
Bean2.java

private Bean3 bean3;
private Bean4 bean4;
private Bean5 bean5;

Bean3.java

private int id;
private String name;
private String password;

Bean4.java

private int id;
private String name;

Bean5.java

private int age;

配置:applicationContext-beans.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"
           default-autowire="buName">

    <!-- <bean id="bean2" class="com.bjsxt.spring.Bean2">
        <property name="bean3" ref="bean3" />
        <property name="bean4">
            <ref bean="bean4" />
        </property>
        <property name="bean5" ref="bean5" />
    </bean> -->
    
    <bean id="bean2" class="com.bjsxt.spring.Bean2" />

    <bean id="bean5" class="com.bjsxt.spring.Bean5">
        <property name="age" value="20" />
    </bean>
</beans>

applicationContext-other.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:aop="http://www.springframework.org/schema/aop"
         xmlns:tx="http://www.springframework.org/schema/tx"
         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
   
   <bean id="beanAbstract" abstract="true">
        <property name="id" value="1000"/>
        <property name="name" value="Jack"/>
   </bean>         
   
   <bean id="bean3" class="com.bjsxt.spring.Bean3" parent="beanAbstract">
        <property name="name" value="Tom"/>
        <property name="password" value="123"/>
   </bean>        
   
   <bean id="bean4" class="com.bjsxt.spring.Bean4" parent="beanAbstract"/>
</beans>

說(shuō)明:這里我們之所以可以這樣簡(jiǎn)單的配置Bean2類螟蒸,是因?yàn)?strong>我們?cè)贐ean2類中的屬性名字和Bean3盒使、Bean4、Bean5這些類中配置的id號(hào)是名字是一樣的七嫌,同時(shí)提供了getter和setter方法少办,這樣spring就會(huì)根據(jù)這個(gè)名字去找相應(yīng)的類,然后實(shí)例化之后注入進(jìn)來(lái)诵原,當(dāng)然這樣配置之后是不會(huì)生效的英妓,我們需要在<beans>標(biāo)簽中配置default-autowire="byName"。這種方式一般用在開(kāi)發(fā)階段绍赛,在項(xiàng)目發(fā)布時(shí)不推薦這樣做蔓纠,因?yàn)樵谂渲梦募锌床坏揭粋€(gè)bean的屬性,不利于維護(hù)吗蚌,一般在開(kāi)發(fā)完之后再改成一般方式腿倚。

測(cè)試:AutowireTest.java

package com.bjsxt.spring;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import junit.framework.TestCase;

public class AutowireTest extends TestCase {
    
    private BeanFactory factory;
    
    @Override
    protected void setUp() throws Exception {
        factory = new ClassPathXmlApplicationContext("applicationContext-*.xml");   
    }

    public void testAutowire() {
        Bean2 bean2 = (Bean2)factory.getBean("bean2");
        System.out.println("bean2.bean3.id=" + bean2.getBean3().getId());
        System.out.println("bean2.bean3.name=" + bean2.getBean3().getName());
        System.out.println("bean2.bean3.password=" + bean2.getBean3().getPassword());
        System.out.println("bean2.bean4.id=" + bean2.getBean4().getId());
        System.out.println("bean2.bean4.name=" + bean2.getBean4().getName());
        System.out.println("bean2.bean5.age=" + bean2.getBean5().getAge());
    }
    
}

二、根據(jù)類型自動(dòng)裝配(工程spring_autowrire_byType

這里所有的類和配置都和上面一樣蚯妇,但是在<beans>標(biāo)簽中配置default-autowire="byType"敷燎,此時(shí)spring會(huì)根據(jù)各個(gè)類的實(shí)際類型去找相關(guān)的實(shí)體類,id可以隨便起名或者忽略箩言。我們推薦使用這種方式進(jìn)行配置硬贯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市分扎,隨后出現(xiàn)的幾起案子澄成,更是在濱河造成了極大的恐慌,老刑警劉巖畏吓,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異卫漫,居然都是意外死亡菲饼,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門列赎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)宏悦,“玉大人,你說(shuō)我怎么就攤上這事”罚” “怎么了源葫?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)砖瞧。 經(jīng)常有香客問(wèn)我息堂,道長(zhǎng),這世上最難降的妖魔是什么块促? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任荣堰,我火速辦了婚禮,結(jié)果婚禮上竭翠,老公的妹妹穿的比我還像新娘振坚。我一直安慰自己,他們只是感情好斋扰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布渡八。 她就那樣靜靜地躺著,像睡著了一般传货。 火紅的嫁衣襯著肌膚如雪屎鳍。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天损离,我揣著相機(jī)與錄音哥艇,去河邊找鬼。 笑死僻澎,一個(gè)胖子當(dāng)著我的面吹牛貌踏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播窟勃,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼祖乳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了秉氧?” 一聲冷哼從身側(cè)響起眷昆,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎汁咏,沒(méi)想到半個(gè)月后亚斋,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡攘滩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年帅刊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片漂问。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赖瞒,死狀恐怖女揭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情栏饮,我是刑警寧澤吧兔,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站袍嬉,受9級(jí)特大地震影響境蔼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜冬竟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一欧穴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧泵殴,春花似錦涮帘、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至吆你,卻和暖如春弦叶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背妇多。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工伤哺, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人者祖。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓立莉,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親七问。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蜓耻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)械巡,斷路器刹淌,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,810評(píng)論 6 342
  • 什么是Spring Spring是一個(gè)開(kāi)源的Java EE開(kāi)發(fā)框架。Spring框架的核心功能可以應(yīng)用在任何Jav...
    jemmm閱讀 16,462評(píng)論 1 133
  • Spring 概述 1. 什么是spring? Spring 是個(gè)java企業(yè)級(jí)應(yīng)用的開(kāi)源開(kāi)發(fā)框架讥耗。Spring主...
    李序鍇閱讀 2,492評(píng)論 0 13
  • “這世間所有相遇都指向團(tuán)聚有勾,唯有你與我的指向別離」懦蹋” - 〔一〕 風(fēng)聲一嘯柠衅,輕易拂去萬(wàn)物根基。 越過(guò)謊言綿延的山籍琳,...
    扶曦閱讀 681評(píng)論 0 1