CDI:注入由依赖项生成的 bean
CDI: Injecting a bean produced by a dependency
我正在创建一个 Maven 依赖项,它有一个 MessageHandler
class。
旁边还有一个 MessageHandlerProduceer class:
public class MessageHandlerProducer {
@Produces
public MessageHandler messageHandler() {
return new MessageHandler();
}
}
在核心项目中列出依赖项后,当我尝试注入 MessageHandler
bean 时,出现以下错误:
Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: javax.enterprise.inject.spi.DeploymentException: javax.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type com.example.MessageHandler and qualifiers [@Default]
在多模块设置中,我们需要兄弟模块提供的 beans 信息。生成这些信息的最简单方法是 enabling Jandex support through the jandex-plugin
.
对于 Maven,应将以下代码片段添加到提供生产者的模块中:
<build>
<plugins>
<plugin>
<groupId>org.jboss.jandex</groupId>
<artifactId>jandex-maven-plugin</artifactId>
<version>1.1.0</version>
<executions>
<execution>
<id>make-index</id>
<goals>
<goal>jandex</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
对于 gradle,可以使用以下代码段:
plugins {
id 'org.kordamp.gradle.jandex' version '0.11.0'
}
这两个片段均取自上面链接的文档,仅用于使此答案独立。那些人的学分归于 Red Hat,因为他们是 quarkus 的维护者,并在上面链接的文档中提供了片段。
我正在创建一个 Maven 依赖项,它有一个 MessageHandler
class。
旁边还有一个 MessageHandlerProduceer class:
public class MessageHandlerProducer {
@Produces
public MessageHandler messageHandler() {
return new MessageHandler();
}
}
在核心项目中列出依赖项后,当我尝试注入 MessageHandler
bean 时,出现以下错误:
Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: javax.enterprise.inject.spi.DeploymentException: javax.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type com.example.MessageHandler and qualifiers [@Default]
在多模块设置中,我们需要兄弟模块提供的 beans 信息。生成这些信息的最简单方法是 enabling Jandex support through the jandex-plugin
.
对于 Maven,应将以下代码片段添加到提供生产者的模块中:
<build>
<plugins>
<plugin>
<groupId>org.jboss.jandex</groupId>
<artifactId>jandex-maven-plugin</artifactId>
<version>1.1.0</version>
<executions>
<execution>
<id>make-index</id>
<goals>
<goal>jandex</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
对于 gradle,可以使用以下代码段:
plugins {
id 'org.kordamp.gradle.jandex' version '0.11.0'
}
这两个片段均取自上面链接的文档,仅用于使此答案独立。那些人的学分归于 Red Hat,因为他们是 quarkus 的维护者,并在上面链接的文档中提供了片段。