IOC與DI的區別
阿新 • • 發佈:2017-07-29
方法 height pri 容器 set con 一個 創建對象 對象實例
一、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.依賴註入和控制反轉是對同一件事情的不同描述,從某個方面講,就是它們描述的角度不同。
依賴註入是從應用程序的角度在描述,可以把依賴註入描述完整點:應用程序依賴容器創建並註入它所需要的外部資源;
而控制反轉是從容器的角度在描述,描述完整點:容器控制應用程序,由容器反向的向應用程序註入應用程序所需要的外部資源。
IOC與DI的區別