gpt4 book ai didi

java - 自 Spring Boot 升级以来,结合 @ConditionalOnMissingBean 定义 Bean 不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:45:06 25 4
gpt4 key购买 nike

我正在使用 Spring Boot Starter 版本 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 库中的 bean 有注解:@ConditionalOnMissingBean

我已经通过使用以下注释对我的 Bean 进行了尝试:@AutoConfigureBefore@Primary

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

这只是一个简单的示例,我的代码中的许多部分都会出现这种情况。

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

最佳答案

我找到了原因。

我必须将返回类型从 StreamsConfig 更改为 KafkaStreamsConfiguration

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

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

关于java - 自 Spring Boot 升级以来,结合 @ConditionalOnMissingBean 定义 Bean 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55728847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com