java – 用代码注入@alternative bean,而不是beans.xml
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 用代码注入@alternative bean,而不是beans.xml,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1315字,纯文字阅读大概需要2分钟。
内容图文
![java – 用代码注入@alternative bean,而不是beans.xml](/upload/InfoBanner/zyjiaocheng/723/2b748357df8d4c31ba7d5cdd159eab3b.jpg)
我们在JUnit中使用EJBContainer测试EJB.测试bean调用的另一个EJB使用@alternative bean进行测试.此模拟bean配置为< alternative>在beans.xml中
一切都像魅力一样,EJB经过测试并使用模拟服务.
问题:是否可以仅使用代码执行相同操作,而不是使用beans.xml?
当然,beans.xml提供了很好的灵活性,但有时人们可能希望为同一个bean提供不同的@alternative,并且可以在同一个项目中为单个/其他测试选择一个特定的.也许另一个解决方案是某些测试的特定beans.xml(问题如何选择它)?
我们的一些测试代码(ExtensionMock由经过测试的EchoRemote实现和部分测试调用):
public class EchoTest {
private EJBContainer ejbContainer;
private Context ctx;
@Before
public void setUp() throws NamingException {
ejbContainer = EJBContainer.createEJBContainer();
ctx = ejbContainer.getContext();
}
@After
public void tearDown() {
ejbContainer.close();
}
@Test
public void testFindAll() {
try {
EchoRemote userEJB = (EchoRemote) ctx.lookup("java:global/ssb-ejb/Echo!examples.ssb.EchoRemote");
assertNotNull(userEJB);
assertEquals("Hello World", userEJB.echo("Hello World"));
} catch (NamingException e) {
throw new AssertionError(e);
}
}
}
<beans>
<alternatives>
<class>examples.ssb.EchoExtensionMock</class>
</alternatives>
</beans>
解决方法:
您可以扩展现有的实现并使用@Specializes注释它,而不是创建独立的@Alternative实现.
另见:http://docs.oracle.com/javaee/6/api/javax/enterprise/inject/Specializes.html
内容总结
以上是互联网集市为您收集整理的java – 用代码注入@alternative bean,而不是beans.xml全部内容,希望文章能够帮你解决java – 用代码注入@alternative bean,而不是beans.xml所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。