如何使用 CDI 从外部库注入 Bean?
如何使用 JSR-299 CDI 从外部库注入(未注释的)bean?
示例:
接口 X 及其实现来自第三方库。我如何决定使用哪个实现?
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
}
How can I use JSR-299 CDI to inject (not annotated) beans from external libraries?
Examples:
Interface X and its implementations come from a third party lib. How can I decide which implementation to use?
class A {
@Inject
private X x;
}
What if I had several classes using the X interface but different implementations?
class A {
@Inject
private X x; // should be XDefaultImpl
}
class B {
@Inject
private X x; // should be XSpecialImpl
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用生产者:
您必须定义
@SpecialX
和@DefaultX
限定符。并将它们与@Inject一起使用:如果不需要区分两个实现,请跳过限定符部分。
Use producers:
You will have to define the
@SpecialX
and@DefaultX
qualifiers. and use them together with@Inject
:If you don't need to differentiate two implementations, skip the qualifiers part.