我有一个带有记录器生成器的实用程序 jar,并且我正在使用 Arquillian 进行另一个项目进行测试。在项目中,我有一个带有 @Inject Logger logger
的类。当我使用 Arquillian 运行测试时,出现错误:org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependency for type Logger with qualifiers @Default
在注入(inject)点
。我之前已经成功地使用当前项目中的生产者来生成记录器 bean,但这是我第一次尝试使用另一个 jar(或依赖项)中的生产者。所以,我想知道生产者是否必须在同一个项目中,或者他们可以在其他 jar 中。预先感谢您。
最佳答案
我认为看到了这个问题——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 will not manage and inject those beans which are annotated with @Voted
另一种是隐式 bean 存档,它包含一些用范围类型注释的 bean,不包含 beans.xml 文件或包含 bean-discovery-mode 属性设置为已注释。
CDI can only manage and inject beans annotated with a scope type in an implicit archive.
引用Java教程
关于java - 另一个jar中的生产者可以用于bean注入(inject)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20026394/