更新時(shí)間:2020年12月17日18時(shí)14分 來(lái)源:傳智教育 瀏覽次數(shù):
DI的全稱(chēng)是Dependency Injection,中文稱(chēng)之為依賴(lài)注入。它與控制反轉(zhuǎn)(IoC)的含義相同,只不過(guò)這兩個(gè)稱(chēng)呼是從兩個(gè)角度描述的同一個(gè)概念。對(duì)于一個(gè)Spring初學(xué)者來(lái)說(shuō),這兩種稱(chēng)呼很難理解,下面我們將通過(guò)簡(jiǎn)單的語(yǔ)言來(lái)描述這兩個(gè)概念。
當(dāng)某個(gè)Java對(duì)象(調(diào)用者)需要調(diào)用另一個(gè)Java對(duì)象(被調(diào)用者,即被依賴(lài)對(duì)象)時(shí),在傳統(tǒng)模式下,調(diào)用者通常會(huì)采用“new 被調(diào)用者”的代碼方式來(lái)創(chuàng)建對(duì)象,如圖1所示。這種方式會(huì)導(dǎo)致調(diào)用者與被調(diào)用者之間的耦合性增加,不利于后期項(xiàng)目的升級(jí)和維護(hù)。
圖1 調(diào)用者創(chuàng)建被調(diào)用者對(duì)象
在使用Spring框架之后,對(duì)象的實(shí)例不再由調(diào)用者來(lái)創(chuàng)建,而是由Spring容器來(lái)創(chuàng)建,Spring容器會(huì)負(fù)責(zé)控制程序之間的關(guān)系,而不是由調(diào)用者的程序代碼直接控制。這樣,控制權(quán)由應(yīng)用代碼轉(zhuǎn)移到了Spring容器,控制權(quán)發(fā)生了反轉(zhuǎn),這就是Spring的控制反轉(zhuǎn)。
從Spring容器的角度來(lái)看,Spring容器負(fù)責(zé)將被依賴(lài)對(duì)象賦值給調(diào)用者的成員變量,這相當(dāng)于為調(diào)用者注入了它依賴(lài)的實(shí)例,這就是Spring的依賴(lài)注入,如圖2所示。
圖2 將被調(diào)用者對(duì)象注入調(diào)用者對(duì)象
猜你喜歡:
Bootstrap簡(jiǎn)介,如何下載和使用Bootstrap?
北京校區(qū)