簡體   English   中英

如何使用CDI從外部庫中注入bean?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM