当前位置: 首页 > 知识库问答 >
问题:

带有Spring DI注释的CDI是否在来自外部依赖时工作?

漆雕伟志
2023-03-14

我正在写一个代码,它需要与QUUKUS和Spring DI兼容。我同时使用DI和Spring Boot Properties扩展,也就是Spring Boot扩展。显然,它工作得很好,但是从外部依赖项注入任何其他对象都不会被注入任何地方。QUUKUS似乎不认识它。

这是Spring扩张的某种限制吗?我已经试过使用quarkus了。索引dependency属性,并尝试包含作为Quarkus扩展结构的dependency,但不起作用。

编辑1:如@Kolossus所述,添加bean。xml解决了DI问题,但我遇到了另一个与properties类相关的错误:

java.lang.运行时异常:io.quarkus.builder.构建异常:构建失败:由于错误导致构建失败

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

属性类的所有注入点中的模糊依赖关系。


共有1个答案

终洛华
2023-03-14

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

@Configuration@ConfigurationProperties(prefix="thum-prefix")公共类集成属性

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

 类似资料:
  • 我有一个叫做Container的类: ServiceB依赖于ServiceA: 在我的应用程序中可以有几个容器。现在,有没有什么诀窍可以将这个已经被注入到与ServiceB相同的容器实例中的ServiceA实例注入到ServiceB中呢?

  • 我目前正在开发一个尽可能尊重六边形架构原则的应用程序。 因此,我的“域”模块(组Id: ; 工件Id:)不依赖于任何技术框架。 我的所有服务都使用自定义注释(本身是我域的一部分)进行注释: 然而,在我的“Quarkus应用”模块(groupId:< code > acme ;artifact id:< code > app-quar kus ,我需要注入我的“域”模块中定义的服务(< code>a

  • 如何在类中注入依赖与@Inject注释micronaut框架 如何使用@Inject

  • 然而,Eclipse告诉我“没有bean可以被注入到注入点[JSR-299§5.2.1]”。我做错了什么?你有没有看到我缺少的东西。如有任何帮助,我们将不胜感激。 谢谢!!

  • 在Spring DI中,将autowired字段声明为可选字段可以使客户端不向其注入任何值。使用Java EE的CDI是否可能做到这一点?我试过可选但失败了。我想知道是否有一个等价的机制我可以使用。 下面是我尝试的: 我得到一个错误消息:线程“main”org.jboss.weld.exceptions.deploymentexception:WELD-001408在注入点[[BackedAnno

  • 我有一个正在使用jar的项目a,比如(其中B是在项目a中用作依赖项的另一个项目),现在有一个(类似于缓存),它在映射中保存所需的所有数据。这个映射bean被project(在我的项目中作为包含)使用,即B来读取缓存属性,但我无法这样做,有什么帮助吗? 项目B的webapp-config.xml 上面的bean b2必须在外部项目B中使用(作为jar包含在我的项目A中)。 但我得到了 任何帮助都将不