JBoss Weld:注入不同的实现进行测试
我想根据上下文在 bean 中注入不同的实现。情况如下:
interface A{}
class AImplForTest implements A{}
class AImplForProd implements A{}
class B{
@Inject A a;
}
在测试上下文中,我希望注入 AImplForTest,而在生产上下文中,这应该是 AImplForProd。 B 在两个上下文中是同一类。是否可以?
I would like to inject a different implementation in a bean, depending on the context. Here is the situation :
interface A{}
class AImplForTest implements A{}
class AImplForProd implements A{}
class B{
@Inject A a;
}
In a test context, I would like the AImplForTest to be injected, while in a production context, this should be AImplForProd. B is the same class in the two contexts. Is it possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
从未在实践中使用过,但从理论上讲,您可以使用
@Alternative
注释。来自焊接参考文档:
Never used in practice but from theory you could use the
@Alternative
annotation.From the Weld reference documentation:
您可以通过使用 @Named 注释定义每个实现类,然后通过 @Inject @Named("ForTest") A a; 注入所需的实现类来完成此操作。如果您尚未找到任何解决方案,希望这对您有所帮助。
You can do this by defining each implementing class with @Named annotation and then inject the desired one by @Inject @Named("ForTest") A a; Hope this helps you if you didn't found any solution yet.