Spring源碼解析_自動(dòng)裝配

1掉缺、自動(dòng)裝配:Spring利用依賴(lài)注入(DI)卜录,完成對(duì)IOC容器中更組件的依賴(lài)關(guān)系賦值

2、@Autowired(是spring的注解)

  • 自動(dòng)注入眶明,默認(rèn)優(yōu)先按照類(lèi)型去容器中找對(duì)應(yīng)的組件艰毒,找到就賦值
  • 如果找到多個(gè)類(lèi)型相同的組件,再將屬性的名稱(chēng)作為組件的id去容器查找
  • @Autowired(required = false):表示找不到springIOC中的bean搜囱,也可輸出

3丑瞧、@Qualifier("beanName"):可以直接指定使用的組件id

4柑土、自動(dòng)裝配 默認(rèn) 一定要將屬性賦值好(即一定要將屬性bean注入到springIOC容器中)

5、@Primary:讓spring進(jìn)行自動(dòng)裝配時(shí)绊汹,默認(rèn)使用首選的bean稽屏,也可以使用@Qualifier("beanName")指定確定裝配的bean

6、Spring還支持使用@Resource(JSR250)注解 和 @Inject(JSR330)注解西乖,這兩注解屬于java規(guī)范:

  • @Resource:實(shí)現(xiàn)自動(dòng)裝配功能狐榔,默認(rèn)按照組件名稱(chēng)進(jìn)行裝配
  • @Inject:

需要導(dǎo)入依賴(lài) @Inject 注入功能和 @Autowired 一樣,卻沒(méi)有require=false 的功能

  • 7获雕、AutowiredAnnotationBeanPostProcessor:解析完成自動(dòng)裝配功能的
  • 8薄腻、@Autowired 作用范圍:構(gòu)造器,參數(shù)届案,方法被廓,屬性

1、標(biāo)注在方法位置:@Bean標(biāo)注的方法創(chuàng)建對(duì)象時(shí)萝玷,方法參數(shù)的值從容器中獲取(Car已經(jīng)注冊(cè)到容器中)昆婿;默認(rèn)不寫(xiě)@Autowired

/**
  *  Car已經(jīng)注冊(cè)到容器中
  *
  **/
@Bean
public Color color(Car car){
    return new Color ();
}

2球碉、標(biāo)注在構(gòu)造器:如果組件只有一個(gè)有參構(gòu)造器,這個(gè)有參構(gòu)造器的@Autowired可以省略仓蛆,參數(shù)位置的組件還是從spring容器中獲日龆;
3看疙、標(biāo)注在參數(shù)位置
注意:默認(rèn)加載ioc容器中的組件豆拨,容器啟動(dòng)會(huì)自動(dòng)調(diào)用無(wú)參構(gòu)造器創(chuàng)造對(duì)象,再進(jìn)行初始化賦值操作能庆。

9施禾、@Profile

  • Spring 提供的可以根據(jù)當(dāng)前環(huán)境,動(dòng)態(tài)的激活和切換一系列bean(組件)的功能

  • 例子:數(shù)據(jù)源的切換
  • 獲取.properties配置文件的三種方式

1搁胆、添加屬性弥搞,在屬性上添加@Value("${db.xxx}")

2、在方法的參數(shù)前添加 @Value("${db.xxx}")
3渠旁、實(shí)現(xiàn) EmbeddedValueResolverAware接口攀例,重寫(xiě) setEmbeddedValueResolver()方法,在該方法中獲取值進(jìn)行處理

  • @Profile:指定組件在哪個(gè)環(huán)境情況下才能注冊(cè)到容器中顾腊,不指定粤铭,任何環(huán)境均能注冊(cè)組件

加了@Profile 環(huán)境標(biāo)識(shí)的bean,只有環(huán)境被激活才能注冊(cè)到容器中杂靶,默認(rèn)是@Profile("default")

  • 如何激活 @Profile

1梆惯、 使用命令行動(dòng)態(tài)參數(shù):-Dspring.profiles.active = test

2酱鸭、代碼激活步驟:
<1>創(chuàng)建一個(gè)applicationContext對(duì)象
<2>設(shè)置需要激活的環(huán)境
<3>注冊(cè)主配置類(lèi)
<4>啟動(dòng)刷新

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市加袋,隨后出現(xiàn)的幾起案子凛辣,更是在濱河造成了極大的恐慌,老刑警劉巖职烧,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扁誓,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蚀之,警方通過(guò)查閱死者的電腦和手機(jī)蝗敢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)足删,“玉大人寿谴,你說(shuō)我怎么就攤上這事∈埽” “怎么了讶泰?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)拂到。 經(jīng)常有香客問(wèn)我痪署,道長(zhǎng),這世上最難降的妖魔是什么兄旬? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任狼犯,我火速辦了婚禮,結(jié)果婚禮上领铐,老公的妹妹穿的比我還像新娘悯森。我一直安慰自己,他們只是感情好绪撵,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布瓢姻。 她就那樣靜靜地躺著,像睡著了一般音诈。 火紅的嫁衣襯著肌膚如雪汹来。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,829評(píng)論 1 290
  • 那天改艇,我揣著相機(jī)與錄音收班,去河邊找鬼。 笑死谒兄,一個(gè)胖子當(dāng)著我的面吹牛摔桦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼邻耕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鸥咖!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起兄世,我...
    開(kāi)封第一講書(shū)人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤啼辣,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后御滩,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鸥拧,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年削解,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了富弦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡氛驮,死狀恐怖腕柜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情矫废,我是刑警寧澤盏缤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布墩蔓,位于F島的核電站陕赃,受9級(jí)特大地震影響声怔,放射性物質(zhì)發(fā)生泄漏汰规。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一菲宴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦俩功、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至胰挑,卻和暖如春蔓罚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瞻颂。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工豺谈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贡这。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓茬末,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子丽惭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理击奶,服務(wù)發(fā)現(xiàn),斷路器责掏,智...
    卡卡羅2017閱讀 134,633評(píng)論 18 139
  • 1.1 Spring IoC容器和bean簡(jiǎn)介 本章介紹了Spring Framework實(shí)現(xiàn)的控制反轉(zhuǎn)(IoC)...
    起名真是難閱讀 2,578評(píng)論 0 8
  • 1.1 spring IoC容器和beans的簡(jiǎn)介 Spring 框架的最核心基礎(chǔ)的功能是IoC(控制反轉(zhuǎn))容器柜砾,...
    simoscode閱讀 6,702評(píng)論 2 22
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,773評(píng)論 6 342
  • 本來(lái)是準(zhǔn)備看一看Spring源碼的。然后在知乎上看到來(lái)一個(gè)帖子换衬,說(shuō)有一群**自己連Spring官方文檔都沒(méi)有完全讀...
    此魚(yú)不得水閱讀 6,927評(píng)論 4 21