Spring IOC以及DI

Spring的IoC(控制反轉) 與DI(依賴注入)

IOC:  控制反轉,所謂控制反轉就是把創建對象(bean)和維護對象(bean)之間的關係的權利轉移到器Sqring容中去了(ApplicationContext.xml)而程序本身不在維護了
DI:    依賴注入,將類裏面的屬性在創建類的過程中給屬性賦值.。實際上DI和IOC是同一個概念,因爲在ApplicationContext.xml配置文件中bean和bean之間通過ref來維護的時候是相互依賴的,所以又叫做依賴注入。

DI和IOC的關係: DI不能單獨存在,DI需要在IOC的基礎上來完成.

這樣做得好處:做到了單一職責,並且提高了複用性,解耦了之後,任你如何實現,使用接口的引用調用的方法,永遠不需要改變

 

IoC能做什麼

IoC不是一種技術,只是一種思想,一個重要的面向對象編程的法則,它能指導我們如何設計出松耦合、更優良的程序。傳統應用程序都是由我們在類內部主動創建依賴對象,從而導致類與類之間高耦合,難於測試;有了IoC容器後,把創建和查找依賴對象的控制權交給了容器,由容器進行注入組合對象,所以對象與對象之間是鬆散耦合,這樣也方便測試,利於功能複用,更重要的是使得程序的整個體系結構變得非常靈活。
其實IoC對編程帶來的最大改變不是從代碼上,而是從思想上,發生了“主從換位”的變化。應用程序原本是老大,要獲取什麼資源都是主動出擊,但是在IoC/DI思想中,應用程序就變成被動的了,被動的等待IoC容器來創建並注入它所需要的資源了。
IoC很好的體現了面向對象設計法則之一—— 好萊塢法則:“別找我們,我們找你”;即由IoC容器幫對象找相應的依賴對象並注入,而不是由對象主動去找。

IoC和DI

DI—Dependency Injection,即“依賴注入”:是組件之間依賴關係由容器在運行期決定,形象的說,即由容器動態的將某個依賴關係注入到組件之中。依賴注入的目的並非爲軟件系統帶來更多功能,而是爲了提升組件重用的頻率,併爲系統搭建一個靈活、可擴展的平臺。通過依賴注入機制,我們只需要通過簡單的配置,而無需任何代碼就可指定目標需要的資源,完成自身的業務邏輯,而不需要關心具體的資源來自何處,由誰實現。

當我們的項目越來越大,合作的開發者越來越多的時候,我們的類就會越來越多,類與類之間的引用就會成指數級的增長

如果我們引入IoC框架。由框架來維護類的生命週期和類之間的引用。也就是說類的使用者只負責使用,而不負責維護。把專業的事情交給專業的框架來完成。大大的減少開發的複雜度。

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