dependency-injection - 当 CDI 来自外部依赖时,带有 Spring DI 注释的 CDI 是否可以工作?

标签 dependency-injection quarkus

我正在编写一个需要与 Quarkus 和 Spring DI 兼容的代码。 我同时使用 DI 和 Spring Boot Properties 扩展,即 Spring Boot Extension。显然,它工作得很好,但是从被注释为 bean 的外部依赖项中注入(inject)任何其他对象都不会注入(inject)到任何地方。 Quarkus 似乎不认识它。

这是 Spring DI 扩展的某种限制吗? 我已经尝试使用 quarkus.index-dependency 属性,并尝试包含结构为 Quarkus 扩展的依赖项,但它不起作用。

编辑1: 正如 @Kolossus 所说,添加 beans.xml 解决了 DI 问题,但我遇到了另一个与属性类相关的错误:

java.lang.RuntimeException:io.quarkus.builder.BuildException:构建失败:由于错误而构建失败

        [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]

属性类的所有注入(inject)点中的依赖关系不明确。

最佳答案

beans.xml 添加到依赖项解决了我的问题。属性类的问题在于该类的注释如下:

@配置 @ConfigurationProperties(前缀=“一些前缀”) 公共(public)类IntegrationProperties

因此 Quarkus 创建了 2 个相同类型的 bean,一个是因为 @configuration,另一个是因为 @ConfigurationProperties。 我通过添加 @EnableConfigurationProperties(IntegrationProperties.class) 来修复它 在另一个配置类中。

关于dependency-injection - 当 CDI 来自外部依赖时,带有 Spring DI 注释的 CDI 是否可以工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62094235/

相关文章:

ios - 如何修改依赖注入(inject)模式中的对象

c# - Autofac。如何在构造函数中注入(inject)一个开放的通用委托(delegate)

java - 使用 getBean 检索范围原型(prototype)的 beans

elasticsearch - 如何在Hibernate搜索中搜索与过滤器匹配的查询结果

Quarkus 休眠验证异常未显示在控制台上

design-patterns - Controller 逻辑与服务/业务层逻辑

c# - 无法使用服务容器中的服务和默认值实例化类型 'MyProject.Response' 的构造函数

java - 使用 docker 启动 quarkus 时,错误 OIDC 服务器在 'quarkus.oidc.auth-server-url' URL 不可用

java - JaCoCo 使用 Quarkus 跳过特定包

quarkus - 在本地编译期间,如何在 Quarkus maven 插件中向 GraalVM 添加参数?