1. 程式人生 > >Spring 中的IOC和DI

Spring 中的IOC和DI

註入 機制 容器 返回 其他 工作 一個 請求 功能

IOC是一種叫做“控制反轉”的設計思想。

1、較淺的層次——從名字上解析
“控制”就是指對 對象的創建、維護、銷毀等生命周期的控制,這個過程一般是由我們的程序去主動控制的,如使用new關鍵字去創建一個對象(創建),在使用過程中保持引用(維護),在失去全部引用後由GC去回收對象(銷毀)。
“反轉”就是指對 對象的創建、維護、銷毀等生命周期的控制由程序控制改為由IOC容器控制,需要某個對象時就直接通過名字去IOC容器中獲取。

2、更深的層次——提到DI,依賴註入,是IOC的一種重要實現
一個對象的創建往往會涉及到其他對象的創建,比如一個對象A的成員變量持有著另一個對象B的引用,這就是依賴,A依賴於B。IOC機制既然負責了對象的創建,那麽這個依賴關系也就必須由IOC容器負責起來。負責的方式就是DI——依賴註入,通過將依賴關系寫入配置文件,然後在創建有依賴關系的對象時,由IOC容器註入依賴的對象,如在創建A時,檢查到有依賴關系,IOC容器就把A依賴的對象B創建後註入到A中(組裝,通過反射機制實現),然後把A返回給對象請求者,完成工作。

3、IOC的意義何在?
IOC並沒有實現更多的功能,但它的存在使我們不需要很多代碼、不需要考慮對象間復雜的耦合關系就能從IOC容器中獲取合適的對象,而且提供了對 對象的可靠的管理,極大地降低了開發的復雜性。

Spring 中的IOC和DI