java - CDI:注入由依赖项生成的 bean
问题描述
我正在创建一个 Maven 依赖项,它有一个MessageHandler
类。除此之外还有一个 MessageHandlerProduceer 类:
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]
解决方案
在多模块设置中,我们需要兄弟模块提供的 bean 信息。生成这些信息的最简单方法是通过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 的维护者,并在上面链接的文档中提供了片段。
推荐阅读
- swift - inOut 字符串不能转换为字符串
- ios - 视觉上改进 iOS 11leadingSwipeActions 的异步操作
- firebase - 基本 FireBase 单词更改
- javascript - 将 HTML 值放入 Javascript 函数中
- javascript - 行单击时的 Jquery 数据表会弹出旧数据
- sql-server - sql server中带有IN条件的COALESCE
- android - 图像无法在 android 的列表视图中正确显示
- r - R中日期的自动强制
- windows - 在 cmd 上的多个子文件夹上运行命令
- json - Scala函数到Json