![](/img/trans.png)
[英]Spring Boot @ConditionalOnMissingBean and generic types
[英]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
。
我找到了原因。
我不得不將返回類型從StreamsConfig
為KafkaStreamsConfiguration
。
注釋: @ConditionalOnMissingBean
不起作用,如果目標類與已加載的bean的類型不同。
錯誤消息具有誤導性,因為消息只是表示bean名稱而不是bean類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.