我需要知道如何在spring配置文件中動態注入依賴。舉個例子,我有一個叫做'A類'的業務邏輯類。在該類中,它處理一個名爲「doSomething()」的方法。 根據應用程序,該方法可以以兩種不同的方式執行(對於相同方法,兩種類型的實現)。所以我用這個方法聲明瞭一個名爲'Manager'的接口,併爲同一接口創建兩個實現類。讓我們稱他們爲'Impl1'和'Impl2',它們實現了界面'經理'。在彈簧配置文件中動態依賴注入
Interface Manager{
void doSomething();
}
Class Impl1 implements Manager{
public void doSomething(){
//doIt like this way
}
Class Impl2 implements Manager{
public void doSomething(){
//doIt like that way
}
}
A類對「經理」接口的引用稱爲「經理」,它將在部署時通過Spring DI進行設置。該注入可以是Impl1對象或Impl2對象。它將由最終用戶決定。所以我必須給最終用戶提供兩種選擇,他或她可以決定他或她想要處理這種「doSomething()」方法的方式,根據他或她的選擇,我將注入相關的實現類(Impl1或Impl2 )。
Class A{
private Manager manager; //this can be either Impl1 or Impl2
public void setManager(Manager manager){
this.manager = manager;
}
public void performLogic(){
manager.doSomething();
}
}
最終用戶只有一次機會做出這樣的選擇和應用程序後,除非用戶想重新安裝應用程序的全新副本將使用該執行下去。如何根據用戶在spring xml文件中的選擇動態地注入相關實現。處理這種情況的最佳方法是什麼?想法是受歡迎的。
非常感謝!
只想說 - 解決方案使用@Profiles更可取 – 2013-03-07 11:38:59
嗨,是的,但我覺得@profile更適合大規模。我只需要在兩個類之間切換隻爲整個應用程序。所以我發現Nandkumar Tekale的回答很適合我的情況。 btw感謝您的支持! – 2013-03-07 11:45:29