dea*_*mon 7 java dependency-injection jsr299 java-ee cdi
如何使用JSR-299 CDI从外部库中注入(未注释)bean?
例子:
接口X及其实现来自第三方lib.我如何决定使用哪种实现?
class A {
@Inject
private X x;
}
Run Code Online (Sandbox Code Playgroud)
如果我有几个类使用X接口但不同的实现怎么办?
class A {
@Inject
private X x; // should be XDefaultImpl
}
class B {
@Inject
private X x; // should be XSpecialImpl
}
Run Code Online (Sandbox Code Playgroud)
使用生产者:
public class ClassInABeanArchive {
@Produces @SpecialX public X createSpecialX() {
return new XSpecialImpl();
}
@Produces @DefaultX public X createDefaultX() {
return new XDefaultImpl();
}
}
Run Code Online (Sandbox Code Playgroud)
您必须定义@SpecialX和@DefaultX限定符.并与它们一起使用@Inject:
@Qualifier
@Retention(..)
@Target(..)
public @interface SpecialX {}
Run Code Online (Sandbox Code Playgroud)
如果您不需要区分两个实现,请跳过限定符部分.
| 归档时间: |
|
| 查看次数: |
1195 次 |
| 最近记录: |