理論入門7788 參見 夏昕的spring開發(fā)入門.pdf

          何謂控制反轉(zhuǎn)(IoC =  Inversion of Control) ,何謂依賴注入(DI =Dependency  Injection);IoC,用白話來(lái)講,就是由容器控制程序之間的關(guān)系,而非傳統(tǒng)實(shí)現(xiàn)中,由程序代碼直接操控。這也就是所謂“控制反轉(zhuǎn)”的概念所在:控制權(quán)由應(yīng)用代碼中轉(zhuǎn)到了外部容器,控制權(quán)的轉(zhuǎn)移,是所謂反轉(zhuǎn)。 
          正在業(yè)界為IoC爭(zhēng)吵不休時(shí), 大師級(jí)人物Martin Fowler也站出來(lái)發(fā)話, 以一篇經(jīng)典文章 《Inversion of Control Containers and the Dependency Injection pattern》為IoC正名,至此,IoC又獲得了一個(gè)新的名字: “依賴注入 (Dependency Injection) ”。 

          這就是筆者的主要工作裝備,IBM T40筆記本電腦一臺(tái)、USB硬盤和U盤各一只。想必大家在日常
工作中也有類似的一套行頭。 
         這與依賴注入有什么關(guān)系? 
三個(gè)設(shè)備都有一個(gè)共同點(diǎn),都支持 USB 接口。當(dāng)我們需要將數(shù)據(jù)復(fù)制到外圍存儲(chǔ)設(shè)備時(shí),可以根據(jù)情況,選擇是保存在U盤還是USB硬盤,下面的操作大家也都輕車熟路,無(wú)非接通USB接口,然后在資源瀏覽器中將選定的文件拖放到指定的盤符. 這樣的操作在過去幾年中每天都在我們身邊發(fā)生,而這也正是所謂依賴注入的一個(gè)典型案例,上面稱之為“古老”想必也不為過分。 
         再看上例中,筆記本電腦與外圍存儲(chǔ)設(shè)備通過預(yù)先指定的一個(gè)接口(USB)相連,對(duì)于筆記本而言,只是將用戶指定的數(shù)據(jù)發(fā)送到USB接口,而這些數(shù)據(jù)何去從,則由當(dāng)前接入的USB設(shè)備決定。在USB設(shè)備加載之前,筆記本不可能預(yù)料用戶將在USB接口上接入何種設(shè)備,只有USB設(shè)備接入之后,這種設(shè)備之間的依賴關(guān)系才開始形成 對(duì)應(yīng)上面關(guān)于依賴注入機(jī)制的描述,在運(yùn)行時(shí)(系統(tǒng)開機(jī),USB 設(shè)備加載)由容器(運(yùn)行在筆記本中的Windows操作系統(tǒng))將依賴關(guān)系(筆記本依賴USB設(shè)備進(jìn)行數(shù)據(jù)存取)注入到組件中(Windows文件訪問組件) 。 這就是依賴注入模式在現(xiàn)實(shí)世界中的一個(gè)版本。

(以上引用至夏昕的spring開發(fā)入門.很好的解釋了什么是依賴注入)