仅对测试有不明确的依赖性

时间:2019-11-27 18:18:00

标签: java cdi quarkus

我将 Spring-DI 注释替换为 Quarkus-CDI 注释。
当应用正常启动时,到目前为止,未检测到功能损失,但是由于多个(主要是重复的)错误导致测试无法运行,例如:

  

[..] com.fasterxml.jackson.databind.ObjectMapper和限定符类型的不明确依赖项[@Named(value =“ objMapper”)]       -Java成员:com.proj.repository.MyDao#()       -在CLASS Bean [types = [com.proj.repository.MyElasticRepository,com.proj.repository.DomainDao,java.lang.Object,com.proj.repository.MyDao,com.proj.repository.ElasticRepository]中声明,限定符= [@Default,@Any],target = com.proj.repository.MyDao]       -可用豆类:

     

-生产者方法bean [types = [java.io.Serializable,com.fasterxml.jackson.core.ObjectCodec,java.lang.Object,com.fasterxml.jackson.databind.ObjectMapper,com.fasterxml。 jackson.core.Versioned,com.fasterxml.jackson.core.TreeCodec],限定词= [@ Named(value =“ objMapper”),@ Default,@ Any],target = com.fasterxml.jackson.databind.ObjectMapper getMapper( ),declaringBean = com.proj.config.JacksonConfig]

     

-生产者方法bean [types = [java.io.Serializable,com.fasterxml.jackson.core.ObjectCodec,java.lang.Object,com.fasterxml.jackson.databind.ObjectMapper,com.fasterxml。 jackson.core.Versioned,com.fasterxml.jackson.core.TreeCodec],限定词= [@ Named(value =“ objMapper”),@ Default,@ Any],target = com.fasterxml.jackson.databind.ObjectMapper getMapper( ),declaringBean = com.proj.config.JacksonConfig]

(1)请注意,两个粗体项目完全相同
(2)几乎没有其他类型会产生相同的错误(课程类型已调整)

映射器定义为:

public class JacksonConfig implements SerializerAdapter<ObjectMapper> {
    ...

    @Named("objMapper")
    @Produces
    public ObjectMapper getMapper() {
        return ...
    }
}

您能解释为什么会这样吗? 如何解决此问题,以便测试能够运行?
如果假设两个错误的声明完全相同,您能建议一种解决此类错误的方法吗?

1 个答案:

答案 0 :(得分:0)

您已经彻底清理了您的应用程序吗?

因为看起来很像您有两个版本的产生bean的类。