Java IoC 控制反轉 DI 依賴注入

2021-08-07 16:12:04 字數 869 閱讀 3295

控制反轉不是什麼技術而是一種思想,將設計好的物件交給容器控制,而不是像傳統那樣由物件內部控制;首先要明確「誰控制誰,控制什麼,為什麼叫反轉,哪些反轉了」

誰控制誰:ioc容器控制物件

控制什麼:控制外部資源獲取和物件例項的建立

為什麼叫反**由容器來幫忙建立及注入依賴物件

注釋:考慮一下常規情況下的應用程式,如果要在a裡面使用c,你會怎麼做呢?當然是直接去建立c的物件,也就是說,是在a類中主動去獲取所需要的外部資源c,這種情況被稱為正向的。那麼什麼是反向呢?就是a類不再主動去獲取c,而是被動等待,等待ioc的容器獲取乙個c的例項,然後反向的注入到a類中。

哪些反轉了:依賴物件的獲取反轉了

元件之間的依賴關係是由容器在執行期決定的,要明確「誰依賴誰,為什麼需要依賴,誰注入誰,注入什麼」

誰依賴誰:應用程式(某個物件)依賴ioc容器

為什麼需要依賴:應用程式需要ioc容器提供需要的外部資源

誰注入誰:ioc容器注入應用程式的某個物件,就是應用程式依賴的物件

注入什麼:注入某個物件需要的外部資源

控制反轉和依賴注入概念梳理: 根據上面描述,不難看出,依賴注入和控制反轉只是從不同角度來描述,依賴注入是從應用程式角度在描述:是應用程式依賴容器建立並且注入他所需要的外部資源;控制反轉是從容器角度在描述:容器控制應用程式,由容器反向響應用程式注入所需要的外部資源。

小結:其實ioc/di對程式設計帶來的最大改變不是從**上,而是從思想上,發生了「主從換位」的變化。應用程式要獲取什麼資源都是主動出擊,但是在ioc/di思想中,應用程式就變成被動的了,被動的等待ioc/di容器來建立並注入它所需要的資源了,使得它們鬆散耦合,有利於功能復用,更重要的是使得程式的整個體系結構變得非常靈活

依賴注入(DI)和控制反轉

依賴注入 di 和控制反轉 ioc 基本是乙個意思,因為說起來誰都離不開誰。簡單來說,a依賴b,但a不控制b的建立和銷毀,僅使用b,那麼b的控制權交給a之外處理,這叫控制反轉 ioc 而a要依賴b,必然要使用b的instance,那麼 通過a的介面,把b傳入 通過a的構造,把b傳入 通過設定a的屬性...

控制反轉 IoC 與依賴注入 DI

最近幾天在 研究容器。發現有幾個理念需要理一下。細一看,又發現根本就是我們之前學過的東西。控制反轉 ioc 與依賴注入 di 這兩個概念有很多相同的內容,只不過是側重不相同。控制反轉 控制反轉 inversion of control,英文縮寫為ioc 是乙個重要的物件導向程式設計的法則來削減電腦程...

控制反轉 IOC 和依賴注入 DI

控制反 從拆解字面上的意思,控制,是指物件建立 銷毀和管理 單例 的控制權,傳統程式設計上這個是交給呼叫方來控制。反轉,是指這些控制權優傳統上的呼叫方反轉為類似乙個容器的東西,統一調配和管理。依賴注入 依賴,其實就是耦合,這裡更多的是呼叫方和操作物件的耦合。注入是指,將某些耦合關係從乙個東西注入到另...