從注入方法上看,主要可以劃分為三種型別:建構函式注入、屬性注入和介面注入。
spring 支援建構函式注入和屬性注入。下面我們繼續使用以上的例子說明這三種注入方法
的區別。
1. 建構函式注入
在建構函式注入中,我們通過呼叫類的建構函式,將介面實現類通過建構函式變數傳
入,如**清單3-3 所示:
**清單 3-3 moattack:通過建構函式注入革離扮演者
public class moattack
public void citygateask()
}moattack 的建構函式不關心具體是誰扮演革離這個角色,只要在①處傳入的扮演者按
劇本要求完成相應的表演即可。角色的具體扮演者由導演來安排,如**清單3-4 所示:
**清單 3-4 director:通過建構函式注入革離扮演者
public class director
}在①處,導演安排劉德華飾演革離的角色,並在②處,將劉德華「注入」到墨攻的劇
本中,然後開始「城門叩問」劇情的演出工作。
2. 屬性注入
有時,導演會發現,雖然革離是影片《墨攻》的第一主角,但並非每個場景都需要革
離的出現,在這種情況下通過建構函式注入並不妥當,這時可以考慮使用屬性注入。屬性
注入可以有選擇地通過setter 方法完成呼叫類所需依賴的注入,更加靈活方便:
**清單 3-5 moattack:通過setter 方法注入革離扮演者
public class moattack
public void citygateask()
}moattack 在①處為geli 屬性提供乙個setter 方法,以便讓導演在需要時注入geli 的具
體扮演者。
**清單 3-6 director:通過setter 方法注入革離扮演者
public class director
}和通過建構函式注入革離扮演者不同,在例項化moattack 劇本時,並未指定任何扮
演者,而是在例項化moattack 後,在需要革離出場時,才呼叫其setgeli()方法注入扮演者。
按照類似的方式,我們還可以分別為劇本中其他諸如梁王、巷淹中等角色提供注入的setter
方法,這樣,導演就可以根據所拍劇段的不同,注入相應的角色了。
3. 介面注入
將呼叫類所有依賴注入的方法抽取到乙個介面中,呼叫類通過實現該介面提供相應的
注入方法。為了採取介面注入的方式,必須先宣告乙個actorarrangable 介面:
public inte***ce actorarrangable
然後,moattack 實現actorarrangable 介面提供具體的實現:
**清單 3-7 moattack:通過介面方法注入革離扮演者
public class moattack implements actorarrangable
public void citygateask()
}director 通過actorarrangable 的injectgeli()方法完成扮演者的注入工作。
**清單 3-8 director:通過介面方法注入革離扮演者
public class director
}由於通過介面注入需要額外宣告乙個介面,增加了類的數目,而且它的效果和屬性注
入並無本質區別,因此我們不提倡採用這種方式。
Spring IoC(控制反轉)
在spring中ioc 控制反轉 是通過使用di 依賴注入 設計預設實現的,那麼什麼是依賴注入呢,所謂依賴注入即是指將呼叫類對介面實現類的依賴關係由第三方注入,取消呼叫類對介面實現類的依賴關係。通過乙個簡單的例子來幫助我們理解依賴注入。首先定義乙個介面,裡面只有乙個quizmaster方法 pack...
Spring IoC(控制反轉)
在spring中ioc 控制反轉 是通過使用di 依賴注入 設計預設實現的,那麼什麼是依賴注入呢,所謂依賴注入即是指將呼叫類對介面實現類的依賴關係由第三方注入,取消呼叫類對介面實現類的依賴關係。通過乙個簡單的例子來幫助我們理解依賴注入。首先定義乙個介面,裡面只有乙個quizmaster方法 pack...
Spring IoC 控制反轉
中文名稱 控制反轉 inversion of control ioc 是什麼 1.將原先由程式設計師通過new 例項化物件的事情交給 spring 來做,即將建立物件的許可權交給spring,前面也提到過spring其實就是乙個容器,當我們需要使用例項化物件的時候,直接從spring容器中取就行了。...