談談對IOC的理解


IOC有三點:容器概念、控制反轉、依賴注入。

IOC容器
實際上就是一個map(key,value),里面存放的時各種對象(在xml里配置的bean節點、@repository、@service、@controller、@component),在項目啟動的時候或讀取配置文件里面的bean節點,根據全限定類名使用反射創建對象放到map里。

這時map里面就有各種對象了,接下來我們再代碼里需要用到里面的對象時,再通過DI注入(@Autowired、@Resource等注解,xml里bean節點內的ref屬性,項目啟動的時候會讀取xml節點ref屬性注入,也會掃描這些注解,根據類型或名稱注入)。

控制反轉
沒有引入IOC容器之前,對象A依賴於對象B,那么對象A在初始化或者運行到某一點的時候,自己必須主動去創建對象B或者使用已經創建的對象B。無論時創建還是使用對象B,控制權都在程序員手中。

引入IOC容器之后,對象A與對象B之間失去了直接聯系,當對象A運行到需要對象B的時候,IOC容器會主動創建一個對象B注入到對象A需要的地方 (注意時IOC容器創建)

通過前后對比,不難看出:對象A獲得依賴對象B的過程,由主動行為變成了被動行為,控制權顛倒過來了,這就是控制反轉名稱的由來

全部對象的控制權全部上繳給IOC容器,所以IOC容器成了整個系統的關鍵核心,他起到類似“粘合劑”的作用,把系統中所有對象粘合到一起發揮作用,如果沒有這個粘合劑,對象與對象之間會彼此失去聯系,這就是有人把IOC容器比喻成“粘合劑”的由來。

依賴注入
獲得依賴對象的過程被反轉了。控制被反轉之后,獲得依賴對象的過程由自身管理變為了由IOC容器自動注入。依賴注入是實現IOC的方法,就是由IOC容器在運行期間,動態地將某種依賴關系注入到對象之中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM