Java 扩展父类时BeanDefinitionOverrideeException
在我们的Java 扩展父类时BeanDefinitionOverrideeException,java,spring-boot,inheritance,Java,Spring Boot,Inheritance,在我们的spring boot服务中,我们有以下情况。我们有两个配置类 @Configuration public class Foo{ @Bean public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory, MessageConverter messageConverter) { log.debug("Initializing rabbitTemplate for
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
}
我们现在得到一个
Bean定义overrideeexception
或多或少地表示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
}
另一种方法不是扩展配置类,而是导入它:
@Configuration
public class Foo{
@Bean
public String getString(){
return "something";
}
}
@Import(Foo.class)
@Configuration
public class Bar {
// Something else in here
}
你能把条形码的完整代码贴出来吗?看起来您有一个覆盖
getString
对不起,对于混淆,我简化了代码。最初不是字符串,而是RabbitTemplate,我猜行为是一样的。我会更新问题。你能发布完整的条形码吗?看起来您有一个覆盖getString
对不起,对于混淆,我简化了代码。原来不是字符串,而是RabbitTemplate,我猜行为是一样的。我会更新问题。