[英]How to inject beans from external libs with CDI?
如何使用JSR-299 CDI從外部庫中注入(未注釋)bean?
例子:
接口X及其實現來自第三方lib。 我如何決定使用哪種實現?
class A {
@Inject
private X x;
}
如果我有幾個類使用X接口但不同的實現怎么辦?
class A {
@Inject
private X x; // should be XDefaultImpl
}
class B {
@Inject
private X x; // should be XSpecialImpl
}
使用生產者:
public class ClassInABeanArchive {
@Produces @SpecialX public X createSpecialX() {
return new XSpecialImpl();
}
@Produces @DefaultX public X createDefaultX() {
return new XDefaultImpl();
}
}
您必須定義@SpecialX
和@DefaultX
限定符。 並與@Inject
一起使用它們:
@Qualifier
@Retention(..)
@Target(..)
public @interface SpecialX {}
如果您不需要區分兩個實現,請跳過限定符部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.