gpt4 book ai didi

java - 扩展父类时出现 BeanDefinitionOverrideException

转载 作者:太空宇宙 更新时间:2023-11-04 09:22:42 24 4
gpt4 key购买 nike

在我们的一项 spring-boot 服务中,我们遇到以下情况。我们有两个配置类

@Configuration
public class Foo{

@Bean
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory, MessageConverter messageConverter) {
log.debug("Initializing rabbitTemplate for sending messages to: {}", rabbitProperties.getHost());
RabbitTemplate template = new RabbitTemplate(connectionFactory);
template.setMessageConverter(messageConverter);
return template;
}

}

@Configuration
public class Bar extends Foo{

// Something else in here, but nothing with same method name or return type like in parent
}

我们现在得到一个BeanDefinitionOverrideException,或多或少表明该 Bean 已被覆盖,我完全理解原因。我现在也可以设置属性 spring.main.allow-bean-definition-overriding=true 但如果有其他聪明的解决方案,我会很感兴趣,在这种情况下,我什至不会在子类中重写它。

最佳答案

另一种选择是不扩展配置类,而是导入它:

@Configuration
public class Foo{

@Bean
public String getString(){
return "something";
}
}

@Import(Foo.class)
@Configuration
public class Bar {

// Something else in here
}

关于java - 扩展父类时出现 BeanDefinitionOverrideException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58130061/

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