Spring讓程序生成程序

Spring最主要的概念:依賴注入和控制反轉

 

依賴注入(Dependency Injection)和控制反轉(Inversion of Control)是同一個概念。編程

具體含義是:當某個角色(多是一個Java實例,調用者)須要另外一個角色(另外一個Java實例,被調用者)的協助時,在傳統的程序設計過程當中,一般由調用者來建立被調用者的實例。設計模式

但在Spring裏,建立被調用者的工做再也不由調用者來完成,所以稱爲控制反轉;建立被調用者實例的工做一般由Spring容器來完成,而後注入調用者,所以也稱爲依賴注入。spa

 

Java程序設計模式的演變:

 

(1)原始社會裏,幾乎沒有社會分工。須要斧子的人(調用者)只能本身去磨一把斧子(被調用者)。對應的情形爲:Java程序裏的調用者本身建立被調用者。設計

(2)進入工業社會,工廠出現。斧子再也不由普通人完成,而在工廠裏被生產出來,此時須要斧子的人(調用者)找到工廠,購買斧子,無須關心斧子的製造過程。對應Java程序的簡單工廠的設計模式。接口

(3)進入「按需分配」社會,須要斧子的人不須要找到工廠,坐在家裏發出一個簡單指令:須要斧子。斧子就天然出如今他面前。對應Spring的依賴注入。

第一種狀況下,Java實例的調用者建立被調用的Java實例,必然要求被調用的Java類出如今調用者的代碼裏。沒法實現兩者之間的鬆耦合。io

第二種狀況下,調用者無須關心被調用者具體實現過程,只須要找到符合某種標準(接口)的實例,便可使用。此時調用的代碼面向接口編程,可讓調用者和被調用者解耦,這也是工廠模式大量使用的緣由。但調用者須要本身定位工廠,調用者與特定工廠耦合在一塊兒。程序設計

第三種狀況下,調用者無須本身定位工廠,程序運行到須要被調用者時,系統自動提供被調用者實例。事實上,調用者和被調用者都處於Spring的管理下,兩者之間的依賴關係由Spring提供。容器

相關文章
相關標籤/搜索