Spring IOC 與DI 心得

IOC: Inversion of Control 控制反轉  是一種設計思想,意味着將你設計好的對象交給容器控制,而非傳統的在對象內部直接控制。

        IOC 控制了對象的創建,傳統的是在對象內部new對象創建。

 

        反轉理解:傳統的對象是由我們在程序中主動去控制對象的創建,叫做正傳,那麼被動由容器來創建及注入依賴對象的話叫做反轉。

            比如: 傳統的對象創建uploading.4e448015.gif轉存失敗重新上傳取消

                       IOC對象創建:uploading.4e448015.gif轉存失敗重新上傳取消

 

 

    IOC的功能:

                依賴注入(DI)  xml配置中的ref標籤 對應spring的 RuntimeBeanRefence對象

                依賴檢查

                自動裝配

                支持集合

                指定初始化方法和銷燬方法

                支持回調某些方法(需要實現spring接口,有侵入性)

 

    對於IOC來說,最重要的是容器,來控制Bean的生命週期,控制着Bean的依賴注入。

    Spring 設計了兩個接口用以表示容器:

 

            BeanFactory    -- HashMap,key是Bean Name,Value是Bean的實例,

                                通常只提供 註冊(put) 和 獲取 (get) 兩個功能,成爲低級容器。

 

            ApplicationContext --  高級容器,繼承了多個接口,具備多種功能,如 資源獲取,支持多種消息等。

                                    定義了一個refresh 方法,重新刷新Bean。

IOC初始化過程--  就是 ClassPathXmlApplicationContext 構造過程

                CreateParentContext() ----> setParent()  ---> refresh() ---> refreshBeanFactory() ---> setEntityResolver()

                ----> 

DI:Dependency Injection  依賴注入

            組件之間的依賴關係由容器在運行期間決定,即容器動態的將某個依賴關係注入到組件中,目的是爲了系統重用。

    IOC是爲了控制到組件內的各種對象,DI則是動態向某個對象提供它所需要的其他對象通過DI來實現。

        DI的基礎實現是java的反射機制。

        可以說 DI是spring實現 IOC 模式的實現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章