繁体   English   中英

自Spring Boot Upgrade以来,与@ConditionalOnMissingBean结合使用Define Bean不起作用

[英]Define Bean in combination with @ConditionalOnMissingBean does not work since Spring Boot Upgrade

我正在使用Spring Boot Starter Version 2.0.8.RELEASE并尝试升级到:2.1.4.RELEASE。 我收到以下错误:

The bean 'defaultKafkaStreamsConfig', defined in class path resource [org/springframework/boot/autoconfigure/kafka/KafkaStreamsAnnotationDrivenConfiguration.class], could not be registered. A bean with that name has already been defined in class path resource [com/mycompany/stream/configuration/StreamsConfiguration.class] and overriding is disabled.

Bean定义为:

public class StreamsConfiguration {

    @Bean(name = KafkaStreamsDefaultConfiguration.DEFAULT_STREAMS_CONFIG_BEAN_NAME)
    public StreamsConfig kStreamsConfigs(StreamsConfigFactory factory) {
        Map<String, Object> additionalProperties = new HashMap<>();
        addConfigurationProperties(additionalProperties);

        return factory.build(additionalProperties);
    }
}

Spring Kafka Library中的bean具有注释: @ConditionalOnMissingBean

我已经通过注释我的Bean来尝试它: @AutoConfigureBefore@Primary

在Spring Boot中改变了什么,上下文加载现在与以前的版本不同?

这只是一个简单的例子,这发生在我的代码中的许多部分。

顺便说一句:我已经使用了@EnableAutoConfigure

我找到了原因。

我不得不将返回类型从StreamsConfigKafkaStreamsConfiguration

注释: @ConditionalOnMissingBean不起作用,如果目标类与已加载的bean的类型不同。

错误消息具有误导性,因为消息只是表示bean名称而不是bean类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM