1. 程式人生 > >IOC與DI的區別

IOC與DI的區別

方法 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的區別