Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 扩展父类时BeanDefinitionOverrideeException_Java_Spring Boot_Inheritance - Fatal编程技术网

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,我猜行为是一样的。我会更新问题。