BeanDefinitionOverrideException при расширении родительского класса - PullRequest
1 голос
/ 27 сентября 2019

В одном из наших 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, более или менее говорящий, что Бин переопределен, и я полностью понимаю, почему.Я также теперь, что вы можете установить свойство spring.main.allow-bean-definition-overriding=true, но мне было бы интересно, если есть другие умные решения, так как я, в этом случае, даже не переопределить его в дочернем классе.

1 Ответ

0 голосов
/ 27 сентября 2019

альтернативой может быть не расширение класса конфигурации, а его импорт:

@Configuration
public class Foo{

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

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

    // Something else in here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...