繁体   English   中英

如何在本地覆盖特定的 Spring bean 而不是允许全局 bean 定义覆盖?

[英]How to override a specific Spring bean locally rather than allow global bean definition overriding?

我有一个第三方@Configuration类,它定义了一个我想用我自己的版本替换的 bean,但我不想排除该配置,因为它定义了我需要的许多其他 bean。 相反,我想实现这样的目标:

@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 中可以吗?

您可以为自定义 bean 使用@Primary注释。

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

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

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM