spring 依賴(lài)注入
依賴(lài)注入(di)是一種設(shè)計(jì)模式,可以從編程代碼中刪除依賴(lài),以便可以輕松管理和測(cè)試應(yīng)用程序。依賴(lài)注入使我們的編程代碼松散耦合。為了更好地理解di,讓我們首先了解依賴(lài)關(guān)系查找(dl):
依賴(lài)關(guān)系查找
依賴(lài)查找是一種在需求之后獲取資源的方法。例如,可以有多種獲取資源的方法:
a obj = new aimpl();
這樣,我們可以通過(guò)new關(guān)鍵字直接獲取資源(a類(lèi)的實(shí)例)。另一種方法是工廠方法:
a obj = a.geta();
這樣,我們通過(guò)調(diào)用靜態(tài)工廠方法geta()獲取資源(a類(lèi)的實(shí)例)。
或者,我們可以通過(guò)jndi(java命名目錄接口)獲取資源。 :
context ctx = new initialcontext(); context environmentctx = (context) ctx.lookup("java:comp/env"); a obj = (a)environmentctx.lookup("a");
可以有多種獲取資源的方法來(lái)獲取資源。讓我們看看這種方法的問(wèn)題。
依賴(lài)關(guān)系查找問(wèn)題
主要有兩個(gè)依賴(lài)關(guān)系查找問(wèn)題。
- 緊密耦合: 依賴(lài)關(guān)系查找方法使代碼緊密耦合。如果更改了資源,則需要對(duì)代碼進(jìn)行大量修改。
- 測(cè)試不容易: 這種方法在測(cè)試應(yīng)用程序時(shí)會(huì)產(chǎn)生很多問(wèn)題,尤其是在黑盒測(cè)試中。
依賴(lài)注入
依賴(lài)注入是一種設(shè)計(jì)模式,它消除了程式。在這種情況下,我們提供來(lái)自外部源(例如xml文件)的信息。它使我們的代碼松散耦合,并且更易于測(cè)試。在這種情況下,我們將代碼編寫(xiě)為:
class employee{ address address; employee(address address){ this.address=address; } public void setaddress(address address){ this.address=address; } }
在這種情況下,address類(lèi)的實(shí)例由外部源(例如xml文件)通過(guò)構(gòu)造函數(shù)或setter方法提供。
在spring框架中執(zhí)行依賴(lài)注入的兩種方法
spring框架提供了兩種注入依賴(lài)項(xiàng)的方法
- 通過(guò)構(gòu)造方法
- 通過(guò)setter方法
spring 依賴(lài)項(xiàng)構(gòu)造方法注入示例 具有依賴(lài)對(duì)象的構(gòu)造函數(shù)注入 constructor注入以及示例 constructor注入(具有從屬對(duì)象)示例 constructor注入和map示例 constructor注入(具有相關(guān)對(duì)象)示例 spring bean繼承 spring setter方法注入 setter注入和依賴(lài)對(duì)象示例 setter注入和集合示例 setter注入(具有相關(guān)對(duì)象)示例 setter注入和map示例 帶非字符串映射的setter注入示例 構(gòu)造函數(shù)與setter注入之間的區(qū)別