IOC與DI的區別


一、IOC介紹

1.IOC是控制反轉。

2.傳統資源查找方式:要求組件向容器發起請求,查找資源作為回應,容器適時返回資源。

3.IOC查找方式:容器會主動將資源提供給它所管理的組件,組件只需要選擇一個合適的方式來接收資源,也被稱為查找的被動式。

4.創建對象實例的控制權從代碼控制剝離到IOC容器控制(之前的寫法,由程序代碼直接操控使用new關鍵字),實際就是你在xml文件控制,控制權的轉移是所謂反轉,側重於原理。

 

二、DI介紹

1.DI是依賴注入

2.IOC的另一種表達方式:組件以一些預先定義好的方式(如:setter方法)接收來自容器的資源注入。

3.相對於IOC而言,這種表述更加直接。

4.創建對象實例時,為這個對象注入屬性值或其它對象實例,側重於實現。

 

屬性注入(最常用)

1.通過set方法注入Bean的屬性值或依賴的對象。

2.name屬性:制定Bean屬性set方法后的屬性名。

3.value屬性值:可以使(value)子節點指定屬性值。

 

構造器注入

1.通過構造器注入Bean屬性值或依賴對象,它保證Bean實例在實例化后可以使用。

2.構造器注入在<constractor-arg>一樣。

 

三、區別

1.它們是spring核心思想的不同方面的描述。

2.依賴注入和控制反轉是對同一件事情的不同描述,從某個方面講,就是它們描述的角度不同。

依賴注入是從應用程序的角度在描述,可以把依賴注入描述完整點:應用程序依賴容器創建並注入它所需要的外部資源;

而控制反轉是從容器的角度在描述,描述完整點:容器控制應用程序,由容器反向的向應用程序注入應用程序所需要的外部資源。


免責聲明!

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



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