Как переопределить указанный c Spring bean локально, а не разрешить переопределение глобального определения bean? - PullRequest
1 голос
/ 27 марта 2020

У меня есть сторонний класс @Configuration, который определяет компонент, который я хочу заменить своей собственной версией, но я не хочу исключать эту конфигурацию, потому что он определяет много других компонентов, которые мне нужны. Вместо этого я хочу добиться чего-то вроде этого:

@Configuration
class ThirdPartyConfig {

    ...

    // unfortunately, there's no @ConditionalOnMissingBean annotation here
    @Bean
    internal fun someBean() = ...

}

@Configuration
@Import(ThirdPartyConfig::class)
class MyLocalConfig {

    // overrides "someBean" in `ThirdPartyConfig`
    @Bean(overrideExistingBeanWithSameNameIfAny = true)
    fun someBean() = ...

}

Возможно ли это в Spring / Spring Boot?

1 Ответ

0 голосов
/ 27 марта 2020

Вы можете использовать аннотацию @Primary для своего пользовательского компонента.

@Configuration
@Import(ThirdPartyConfig::class)
class MyLocalConfig {

    @Primary
    @Bean
    fun someBean() = ...

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