我有一個用@Component和@Service註解的類。從豆容器得到這個類的實例通常使用的方法是使用@Reference:Spring-Roo:如何按名稱或編號檢索組件實例?
@Reference private MyClass myclass;
我怎麼能檢索使用,因爲我們在Spring Web應用程序做的ApplicationContext字符串鍵的實例?我已經嘗試了ComponentContext.locateService,但我不知道這是否正確,以及我必須使用哪個鍵值。
MyClass myclass = (MyClass)context.locateService("????"); //Which is the way?
編輯我的問題,我會試着更好地解釋。 我有這樣一個類:
@Component
@Service
class MySvcImpl implements MySvc { ... }
注入這樣:
class Main {
@Reference private MySvc svc;
void method1(){
svc.doXXX();
}
}
在這種情況下,我有一個類。我想要有一堆組件子類(MySvcSubX),以便我可以根據參數使用它們中的任何一個。據稱,我不再需要@Reference行。
@Component
@Service
class MySvcSub1Impl extends MySvcImpl implements MySvc { ...}
//The same with MySvcSub2Impl, 3, and so forth
然後在我的主類:
void method1(String key){
MySvc svc = callToLocateBeanById(key);
}
我不應該需要添加每個子類中的引用,能夠通過他們的名字找到他們。
如果我正確理解了這個問題,它與osgi聲明的服務有關,而不是spring。但我不知道爲什麼會有一個spring-roo標籤:-) –
spring-roo標籤是因爲我正在開發一個插件。 Spring Roo插件使用OSGi功能,而Roo shell使用osgi命令安裝它們。 – Rafa