另一个罐子里的生产者可以用于豆类注射吗?

时间:2013-11-17 02:16:19

标签: java java-ee jboss-arquillian

我有一个实用程序jar,它有一个记录器生成器,我正在使用Arquillian进行另一个项目测试。在项目中,我有一个@Inject Logger logger的课程。当我使用Arquillian运行测试时,我收到错误消息org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type Logger with qualifiers @Default at injection point。我之前已成功使用当前项目的生产者来生成一个logger bean,但这是我第一次尝试使用另一个jar(或依赖项)的生产者。所以,我想知道生产者是否必须在同一个项目中,或者他们可以在其他罐子里。提前谢谢。

1 个答案:

答案 0 :(得分:2)

我认为看到问题 - 这对Arquillian来说没有错。

显式jar 包含beans.xml文件,该文件可以为空,或者不包含版本号,或者包含版本号1.1且bean-discovery-mode属性设置为all。如:

对于JavaEE7

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
                           http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
       version="1.1" bean-discovery-mode="all">

</beans>
  

CDI不会管理和注入那些带注释的bean   @Voted

另一个是隐式bean归档,它包含一些使用作用域类型注释的bean,不包含beans.xml文件或包含beans.xml发现模式属性设置为的beans.xml文件注释

  

CDI只能管理和注入带有范围类型的bean注释   隐式存档。

参考Java教程

Packaging CDI Applications

Weld-Doc