Spring的核心-依賴注入(控制反轉(zhuǎn))

了解Spring的核心依賴注入和控制反轉(zhuǎn)IOC之前需要先了解一下冕末,之前客戶端是如何處理這件事情的楔脯。

   客戶案例--創(chuàng)造一臺(tái)汽車 

/傳統(tǒng)方式處理/
首先我們知道客戶端創(chuàng)建一個(gè)對(duì)象,比如一臺(tái)汽車鸣戴,需要new car 啃沪。這個(gè)時(shí)候我們知道car還需要引擎engine。 所以我們又需要new 一個(gè)engine葵擎。 并讓engine注入到car中. 那么一臺(tái)汽車就好了谅阿。 這個(gè)時(shí)候就有一個(gè)問(wèn)題,就是汽車需要量產(chǎn)酬滤,我們需要1000臺(tái)汽車cars. 如果按照傳統(tǒng)的做法就是我們需要new 1000car ,同時(shí)還要new 1000個(gè)engine。 這樣非常復(fù)雜寓涨,同時(shí)占用了相當(dāng)大的內(nèi)存盯串。這個(gè)就是傳統(tǒng)的正轉(zhuǎn)。
/Spring控制反轉(zhuǎn)和依賴注入處理方式/
Spring控制反轉(zhuǎn)IOC的意思就是你不用顯示的在一個(gè)類里用new關(guān)鍵字來(lái)生成你想要的對(duì)象而只需在xml配置文件里添加相應(yīng)節(jié)點(diǎn)即可戒良,這樣就讓你整個(gè)程序的組成變得靈活多樣体捏。 之前的方式是由客戶端主動(dòng)的去new cars和engine這些東西。現(xiàn)在的方式是Spring提供IOC也就是控制反轉(zhuǎn)的一個(gè)思想糯崎。 所有的創(chuàng)建類都由IOC容器創(chuàng)建好几缭。比如客戶端需要一輛car,以及engine。那么在客戶端需要之前沃呢,IOC容器就已經(jīng)new了一個(gè)car,和engine. 并且將engine已經(jīng)注入到car里面去了年栓。 也就是客戶端需要car,IOC就主動(dòng)將裝配完畢的car給客戶端了薄霜。也就是說(shuō)控制反轉(zhuǎn)就是之前由客戶端程序控制創(chuàng)建的機(jī)制某抓,變?yōu)镮OC容器來(lái)控制創(chuàng)建的反轉(zhuǎn)。 依賴注入就是客戶端程序依賴于IOC容器去注入程序所需要的類也就是外部資源惰瓜。
/那么還有一個(gè)問(wèn)題否副,當(dāng)客戶端服務(wù)器需要1000個(gè)car的時(shí)候,IOC容器是如何體現(xiàn)控制反轉(zhuǎn)和依賴注入的好處的呢?/ 我們知道傳統(tǒng)的方式是客戶端程序需要new 1000個(gè)car 以及1000個(gè)engine崎坊。造成了資源的浪費(fèi)备禀。 由于控制反轉(zhuǎn)這里IOC容器是在客戶端程序需要car之前就已經(jīng)將car創(chuàng)建完畢,所以1000 car在每次創(chuàng)建的時(shí)候只開(kāi)辟一個(gè)內(nèi)存空間給car,和另一個(gè)內(nèi)存空間給engine。然后將car依賴engine得到最終的car曲尸。 然后重復(fù)1000次就完成了創(chuàng)建呻待。這樣就有效的節(jié)約了內(nèi)存資源。 創(chuàng)建car,依賴于engine的例子類似于公司員工需要使用打印機(jī)的案例队腐。10個(gè)員工需要打印機(jī)蚕捉,公司不可能就買10個(gè)打印機(jī)。而是只買一個(gè)柴淘,然后先后打印的方式完成迫淹。

 代碼示例

/***一個(gè)人是中國(guó)人的時(shí)候說(shuō):你好,中國(guó)为严。是外國(guó)人的時(shí)候說(shuō):HelloWorld ***/
1.所需要的類
這里我們需要HelloChina的類來(lái)說(shuō)中文敛熬,以及另一個(gè)HelloWorld的類來(lái)說(shuō)英語(yǔ)。同時(shí)我們定義了一個(gè)接口IHellloWorld接口類第股。還有我們需要一個(gè)人來(lái)說(shuō)应民,所以我們定義了Person類,并擁有IHelloMessage屬性夕吻,以及say方法诲锹。代碼如下:

IHelloNessage接口類
HelloChina實(shí)現(xiàn)類
HelloWorld實(shí)現(xiàn)類

Person類

2.主方法
在主Main方法中讀取Spring配置文件helloMessage來(lái)獲取程序所需要的外部資源Person.而不再是通過(guò)new來(lái)創(chuàng)建。代碼如下

Main主方法

3.Spring配置文件helloMessage.xml的配置
Spring的依賴注入和控制反轉(zhuǎn)都是通過(guò)配置文件進(jìn)行實(shí)現(xiàn)的涉馅。每一個(gè)Bean都對(duì)應(yīng)相應(yīng)的一個(gè)類归园。本例中Bean了HelloWorld,HelloChina,Person三個(gè)類。同時(shí)前面兩個(gè)又是通過(guò)依賴的方式給到Person中稚矿。此處我們依賴的是HelloWorld這個(gè)類庸诱。 具體代碼如下:

helloMessage.xml

4.輸出結(jié)果
根據(jù)配置文件中,Person屬性helloMessage依賴的不同實(shí)現(xiàn)類晤揣,打印的結(jié)果也會(huì)不同桥爽。

ref="helloChina"

ref="helloWorld"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市昧识,隨后出現(xiàn)的幾起案子钠四,更是在濱河造成了極大的恐慌,老刑警劉巖滞诺,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件形导,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡习霹,警方通過(guò)查閱死者的電腦和手機(jī)朵耕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)淋叶,“玉大人阎曹,你說(shuō)我怎么就攤上這事。” “怎么了处嫌?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵栅贴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我熏迹,道長(zhǎng)檐薯,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任注暗,我火速辦了婚禮坛缕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘捆昏。我一直安慰自己赚楚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布骗卜。 她就那樣靜靜地躺著宠页,像睡著了一般。 火紅的嫁衣襯著肌膚如雪寇仓。 梳的紋絲不亂的頭發(fā)上举户,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音焚刺,去河邊找鬼敛摘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛乳愉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播屯远,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蔓姚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了慨丐?” 一聲冷哼從身側(cè)響起坡脐,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎房揭,沒(méi)想到半個(gè)月后备闲,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捅暴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年恬砂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蓬痒。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泻骤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情狱掂,我是刑警寧澤演痒,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站趋惨,受9級(jí)特大地震影響鸟顺,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜器虾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一讯嫂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧曾撤,春花似錦端姚、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至装悲,卻和暖如春昏鹃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背诀诊。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工洞渤, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留创橄,地道東北人巷折。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓静檬,卻偏偏與公主長(zhǎng)得像缨历,于是被迫代替她去往敵國(guó)和親黔龟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子茴肥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

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