外部LIBSから豆をCDIで注入する方法は?
-
24-10-2019 - |
質問
JSR-299 CDIを使用して外部ライブラリから豆を注入するにはどうすればよいですか?
例:
インターフェイス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 {}
2つの実装を区別する必要がない場合は、予選部品をスキップします。
所属していません StackOverflow