在java開發中,將你設計好的對象交給了容器控制。傳統的程序設計,咱們是直接在對象內部經過new進行建立對象,是由程序主動去建立依賴關係對象。IOC思想是有專門一個容器來建立這些對象,由IOC容器來控制這些對象的建立。java
誰控制了誰?IOC容器控制對象。spa
控制了什麼?主要控制了外部資源獲取(不僅是對象,包括文件等)。設計
爲什麼是反轉,哪些方面反轉了?有反轉就有正傳。傳統應用程序是由咱們本身在對象中主動控制去直接獲取依賴的對象,這就是正傳;而反轉則是由容器來幫忙建立和注入依賴的對象。對象
爲什麼是反轉?由於由容器幫咱們查找及注入依賴對象,對象只是被動的接受依賴對象,因此是反轉。資源
那些方面反轉了?依賴對象的獲取被反轉了。開發
組件之間的依賴關係由容器在運行期決定,即由容器動態的將某個依賴關係注入到組件之中。依賴注入的目的並非給應用程序帶來更多的功能,而是爲了提高組件的重用的頻率,併爲系統搭建一個靈活、可擴展的平臺。經過依賴注入機制,咱們只要經過簡單的配置就可指定目標須要的資源,完成自身的業務邏輯,而不須要關心具體的資源來自何處,由誰實現。io
誰依賴了誰?應用程序依賴於IOC容器。程序設計
爲何須要依賴?應用程序須要IOC容器提供對象須要的外部資源。容器
誰注入誰?IOC容器注入應用程序所依賴的對象。擴展
注入了什麼?注入某個對象所須要的外部資源(對象,資源等)。
其實它們是同一個概念的不一樣角度描述
IOC是以誰控制了誰的角度的一種設計思想
DI是以誰依賴了誰的角度的一種設計思想