1、IOC介紹spring
1.IOC是控制反轉。spa
2.傳統資源查找方式:要求組件向容器發起請求,查找資源做爲迴應,容器適時返回資源。xml
3.IOC查找方式:容器會主動將資源提供給它所管理的組件,組件只須要選擇一個合適的方式來接收資源,也被稱爲查找的被動式。對象
4.建立對象實例的控制權從代碼控制剝離到IOC容器控制(以前的寫法,由程序代碼直接操控使用new關鍵字),實際就是你在xml文件控制,控制權的轉移是所謂反轉,側重於原理。資源
2、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>同樣。
3、區別
1.它們是spring核心思想的不一樣方面的描述。
2.依賴注入和控制反轉是對同一件事情的不一樣描述,從某個方面講,就是它們描述的角度不一樣。
依賴注入是從應用程序的角度在描述,能夠把依賴注入描述完整點:應用程序依賴容器建立並注入它所須要的外部資源;
而控制反轉是從容器的角度在描述,描述完整點:容器控制應用程序,由容器反向的嚮應用程序注入應用程序所須要的外部資源。