更新時(shí)間:2020-12-17 來源:黑馬程序員 瀏覽量:
DI的全稱是Dependency Injection,中文稱之為依賴注入。它與控制反轉(zhuǎn)(IoC)的含義相同,只不過這兩個(gè)稱呼是從兩個(gè)角度描述的同一個(gè)概念。對于一個(gè)Spring初學(xué)者來說,這兩種稱呼很難理解,下面我們將通過簡單的語言來描述這兩個(gè)概念。
當(dāng)某個(gè)Java對象(調(diào)用者)需要調(diào)用另一個(gè)Java對象(被調(diào)用者,即被依賴對象)時(shí),在傳統(tǒng)模式下,調(diào)用者通常會(huì)采用“new 被調(diào)用者”的代碼方式來創(chuàng)建對象,如圖1所示。這種方式會(huì)導(dǎo)致調(diào)用者與被調(diào)用者之間的耦合性增加,不利于后期項(xiàng)目的升級和維護(hù)。
圖1 調(diào)用者創(chuàng)建被調(diào)用者對象
在使用Spring框架之后,對象的實(shí)例不再由調(diào)用者來創(chuàng)建,而是由Spring容器來創(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容器的角度來看,Spring容器負(fù)責(zé)將被依賴對象賦值給調(diào)用者的成員變量,這相當(dāng)于為調(diào)用者注入了它依賴的實(shí)例,這就是Spring的依賴注入,如圖2所示。
圖2 將被調(diào)用者對象注入調(diào)用者對象
猜你喜歡:
【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營】深圳跨境電商運(yùn)營畢業(yè)22個(gè)工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個(gè)工作日,班級93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19【AI大模型開發(fā)-Python】畢業(yè)33個(gè)工作日,就業(yè)率已達(dá)到94.55%,班均薪資20763元
2025-09-19【AI智能應(yīng)用開發(fā)-Java】畢業(yè)5個(gè)工作日就業(yè)率98.18%,最高薪資 17.5k*13薪,全班平均薪資9244元
2025-09-19