![](/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.