Java 焊接和试验罐
我们有一个maven多模块项目,包括以下模块:Java 焊接和试验罐,java,maven,dependency-injection,cdi,weld,Java,Maven,Dependency Injection,Cdi,Weld,我们有一个maven多模块项目,包括以下模块: prj srv prj客户 srv项目包含EJB。在prjsrv/src/test中,我们有EJB的@Alternative实现,在beans.xml的alternations部分中指定。这很有效 项目prj客户将prj srv作为依赖项。此外,它还依赖于类型测试jar、范围测试的prjsrv,因此它可以使用替代的EJB实现进行测试。这也行得通 现在:在prj client/src/main/java中,我们有EJB接口的本地实现(以便我们可以
- prj srv
- prj客户
- 在prj client/src/test/java中创建一个具有生产者方法(@products@Alternative@Cacheable)的类,但我不知道如何配置beans.xml将其设置为替代方法
- 在prj srv/src/test/java中创建扩展测试EJB的类,注释@Alternative@Cacheable,并将它们放在alternatives部分的src/test/resources/META-INF/beans.xml中,但weld仍然从src/main/java注入“真正的”可缓存bean
将@Alternative与限定符混合是否存在问题?如何让我的测试使用合格类的替代实现?刚刚找到了它:我忘了用@Inject标记@Cacheable实现的构造函数。显然,尽管它在beans.xml中被标记为一个备选方案,但由于Weld不知道如何初始化它,所以它没有抛出错误,而是默默地决定忽略该备选方案