我有類層次結構,我想根據子類的類型使用CDI注入字段。 這種情況在下面的Java代碼描述:CDI:基於對象類的注入
@Stateless
public class A {
@Inject
@MyInjection
D d;
...
public void templateMethod(){...};
protected void step1(){...};
protected void step2(){...};
}
@Stateless
public class B extends A {
...
protected void step1(){...};
protected void step2(){...};
}
@Stateless
public class C extends A {
...
protected void step1(){...};
protected void step2(){...};
}
public class F {
@Produces
@MyInjection
D myProducer(InjectionPoint ip){
Class<?> clazz = ip.getMember().getDeclaringClass();
//if clazz is B then inject one type
//if clazz is C then inject other type
//default inject default type
}
}
這些咖啡豆包裝適當ejb.jar歸檔爲EAR的一部分,並且在適當的位置在beans.xml文件。該代碼是使用Java EE 7
使用此代碼我得到的類層次結構的基類(在這種特殊情況下A類),這是當我想它的邏輯,東陽InjectionPoint 場Wildfly 10服務器上執行確實在A級。 關鍵是我想根據子類別進行區分,儘管我在超類中進行了注入。
我可以使用InjectionPoint類實現這個嗎?有沒有什麼可能的方法來實現這一目標?
更多關於我想用這段代碼實現的內容。這個層次結構實現了模板方法設計模式,並且所有類都是具體的,可以使用實現一般算法和特定步驟的類A,但是您可以選擇重新定義某些子類中的步驟。還需要注入特定類型D,根據子類型可能會有所不同。
不幸的是,有強烈的願望不重新設計低音類A.所以我試圖找到我的方式注入基類使用CDI,而不是使用部署描述符的東西。
請在你的問題中提到你試過的所有東西 –