Переопределение и расширение bean-компонента, если приложение работает с данным профилем - PullRequest
0 голосов
/ 15 октября 2019

Итак, скажем, у меня есть главный бин, аннотированный @Service, который внедряется в другие сервисы с @Autowired.

@Service
@Order(100)
class MainService() {
   fun helloWorld() = "Hello"
}

И я хотел бы расширить этот сервис при запуске с другим профилем fg. ( "Обычай"). Итак, у меня есть служба, как показано ниже:

@Service("mainService")
@Order(1)
class CustomService: MainService() {
    override fun helloWorld() = "Hello custom"
}

Но я получаю это исключение:

Причина: org.springframework.context.annotation.ConflictingBeanDefinitionException: указанный в аннотации компонентимя 'mainService' для класса бина [MainService] конфликтует с существующим несовместимым определением бина с тем же именем и классом [CustomService]

У вас есть идея, как можно расширить и переопределить бин под одним и тем жеимя? Это потому, что мне нужно подключить его куда-нибудь еще

1 Ответ

0 голосов
/ 15 октября 2019

Вы можете использовать конфигурационные компоненты для этого:

@Configuration
@Profile("dev")
public class MainServiceDev {

    @Bean
    public MainService mainService() {
        return new MainService();
    }

}

@Configuration
@Profile("custom")
public class MainServiceCustom {

    @Bean
    public CustomService customService() {
        return new CustomService();
    }

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