我使用的是springbootstarterversion2.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库中的bean有如下注解: @ConditionalOnMissingBean
.
我已经试过了,用以下注解我的bean: @AutoConfigureBefore
以及 @Primary
.
在spring boot中,上下文加载与以前的版本有什么不同?
这只是一个简单的例子,这发生在我的代码的许多部分。
顺便说一句:我已经用过了 @EnableAutoConfigure
.
1条答案
按热度按时间vs91vp4v1#
我找到了原因。
我不得不把返回类型从
StreamsConfig
至KafkaStreamsConfiguration
.注解:
@ConditionalOnMissingBean
如果目标类与其类型不同于已加载的bean,则不起作用。错误消息是误导性的,因为消息只是表示bean名称,而不是bean类型。