1. 程式人生 > >Spring升級案例之IOC介紹和依賴注入

Spring升級案例之IOC介紹和依賴注入

#### Spring升級案例之IOC介紹和依賴注入 ##### 一、IOC的概念和作用 ###### 1.什麼是IOC 控制反轉(Inversion of Control, [IoC](https://www.cnblogs.com/xdp-gacl/p/4249939.html))是一種設計思想,在Java中就是將設計好的物件交給容器控制,而不是傳統的在物件內部直接控制。傳統Java SE程式設計,我們直接在物件內部通過new進行建立物件,是程式主動去建立依賴物件;而IoC是有專門一個容器來建立這些物件,即由Ioc容器來控制物件的建立;可以理解為IoC 容器控制了物件和外部資源獲取(不只是物件包括比如檔案等)。 ###### 2.反轉和正轉 有反轉就有正轉,傳統應用程式是由我們自己在物件中主動控制去直接獲取依賴物件,也就是正轉;而反轉則是由容器來幫忙建立及注入依賴物件;為何是反轉?因為由容器幫我們查詢及注入依賴物件,物件只是被動的接受依賴物件,所以是反轉;哪些方面反轉了?依賴物件的獲取被反轉了。 ###### 3.IoC的作用 IoC 不是一種技術,只是一種思想,一個重要的面向物件程式設計的法則,它能指導我們如何設計出鬆耦合、更優良的程式。傳統應用程式都是由我們在類內部主動建立依賴物件,從而導致類與類之間高耦合,難於測試;有了IoC容器後,把建立和查詢依賴物件的控制權交給了容器,由容器進行注入組合物件,所以物件與物件之間是 鬆散耦合,這樣也方便測試,利於功能複用,更重要的是使得程式的整個體系結構變得非常靈活。 此外,IoC對程式設計帶來的最大改變不是從程式碼上,而是從思想上,發生了“主從換位”的變化。應用程式原本是老大,要獲取什麼資源都是主動出擊,但是在IoC/DI思想中,應用程式就變成被動的了,被動的等待IoC容器來建立並注入它所需要的資源了。 ##### 二、基於XML的IOC ###### 1.建立工程 本專案建立在[入門案例](https://www.cnblogs.com/liyier/p/13286079.html)中傳統三層架構的基礎上,專案結構如下: ![SpringIOC的專案結構](https://tva1.sinaimg.cn/large/007S8ZIlgy1ggq7v5xm5zj30cu09vjrz.jpg) 首先在pom.xml檔案中新增如下內容: ```xml ``` ###### 2.建立xml檔案 在resource目錄下新建beans.xml檔案,首先需要匯入約束: