閱讀258 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Spring的IOC容器

一:先解釋IOC
IOC:通常叫做控製反轉,依賴注入,好萊塢原則
二:以依賴注入這個角度來闡述IOC。
在沒有IOC的場景下是:被注入的對象會直接依賴於被依賴對象。
在IOC的情況下,被注入的對象和依賴對象二者之間通過IOC Service Provider來打交道,所有的被注入對象和依賴對象由IOC Service Provider統一管理。 談到這裏IOC Service Provider 就是通常的IOC容器所充當的角色。
三:總結
從被注入對象的角度看,與之前直接尋求依賴對象相比,依賴對象的取得方式發生了反轉;控製也從被注入對象轉到了IOC Service Provider哪裏。說的簡單樸素一點,原來需要的什麼東西需要自己去拿,現在需要什麼東西就讓IOC送過來。
作為被注入對象,要想讓IOC Service Provider為其提供服務,並將所需要的被依賴對象送過來,也需要通過某種方式通知對方,那麼這個被依賴對象又通過哪些方式來通知IOC Service Provider為其提供服務呢?那麼這就是三種依賴注入的方式:1:構造方法注入,2:setter注入,3:接口注入
如果用一句話來概括IOC可以帶給我們什麼?那麼我們希望是IOC是一種可以幫助我們解耦各業務對象間依賴關係的對象綁定方式。
雖然業務對象可以通過三種IOC方式聲明相應的依賴,但是最終任然都會通過某種角色或服務將這些相互依賴的對象綁定到一起,而IOC Service Provider就對應IOC場景中的這一角色,換句換來解釋就是:IOC容器指代將IOC場景中的業務對象綁定在一起的實現方式。說到這裏Spring IOC容器就是一個提供依賴注入服務的IOC Service Provider。
IOC Service Provider的職責:主要有兩個:1:業務對象的構建管理。2:業務對象間的依賴綁定。
1:業務對象的構建管理:IOC Service Provider需要將對象的構建邏輯從客戶端對象那裏剝離出來。什麼是客戶端對象?舉例:Service層就是DAO層的客戶端對象。
2:業務對象間的依賴綁定:對於IOC Service Provider來說,如果這個職責不完成,無論業務對象如何唿喊,也不會得到依賴對象的響應,還要收到一個NPE給你。那麼IOC Service Provider通過結合之前構建和管理的所有業務對象,以及各個業務對象之間可以識別的依賴關係,將這些對象所依賴的對象注入綁定,從而保證每個業務對象在使用的時候,可以處於就緒狀態。

 IOC Service Provider如何管理對象間的依賴關係的呢?
 說到底IOC Service Provider不是人類,不會有記憶功能,那麼肯定就是通過某種方式來記錄對象之間的關係。有三種方式:1:直接編碼方式。2:配置文件方式。3:元數據方式。

最後更新:2017-06-05 23:31:34

  上一篇:go  【資料合集】首屆互聯網新兵進階在線峰會:講義PDF+活動視頻!(持續更新)
  下一篇:go  阿裏內核月報2014年3月