簡體   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