【发布时间】:2020-05-29 20:36:44
【问题描述】:
我正在编写一个需要与 Quarkus 和 Spring DI 兼容的代码。 我正在使用 DI 和 Spring Boot 属性扩展,即 Spring Boot 扩展。显然,它工作正常,但是从注释为 bean 的外部依赖项注入任何其他对象不会在任何地方注入。 Quarkus 似乎没有认出它。
这是 Spring DI 扩展的某种限制吗?
我已经尝试过使用quarkus.index-dependency 属性,还尝试将依赖项包含在 Quarkus 扩展中,但没有成功。
编辑 1:
正如@Kolossus 所说,添加beans.xml 解决了DI 问题,但我遇到了另一个与属性类相关的错误:
java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: javax.enterprise.inject.spi.DeploymentException: Found 3 deployment problems:
[1] Ambiguous dependencies for type com.properties.IntegrationProperties and qualifiers [@Default]
- java member: com.authorization.AuthenticationService#<init>()
- declared on CLASS bean [types=[com.authorization.AuthenticationService, java.lang.Object], qualifiers=[@Named(value = "authenticationService"), @Default, @Any], target=com.authorization.AuthenticationService]
- available beans:
- CLASS bean [types=[com.properties.IntegrationProperties, java.lang.Object], qualifiers=[@Default, @Any], target=com.properties.IntegrationProperties]
- PRODUCER METHOD bean [types=[com.properties.IntegrationProperties, java.lang.Object], qualifiers=[@Default, @Any], target=com.properties.IntegrationProperties produceIntegrationProperties(org.eclipse.microprofile.config.Config), declaringBean=io.quarkus.arc.runtime.config.ConfigPropertiesProducer]
属性类的所有注入点中的不明确依赖项。
【问题讨论】:
-
您是否尝试过将
beans.xml或jandex.idx添加到第三方JAR 的META-INF 中?您应该在此处添加您尝试注入的 bean 的代码;可能只是它不满足归类为 bean 的要求。 -
谢谢,这解决了我的问题,即 Quarkus 没有找到在依赖项中声明的 bean,但现在
@ConfigurationProperties类的注入存在不明确的依赖项问题
标签: dependency-injection quarkus