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

标签 java spring spring-boot kotlin

我有一个第三方@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中有可能吗?

最佳答案

您可以将@Primary注释用于您的自定义bean。

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

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

}

关于java - 如何在本地覆盖特定的Spring bean,而不是允许全局bean定义覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60885288/

相关文章:

用于编码/解码 AMF 的 Java 库

java - npm 与 java - 抛出错误

java - SpEL java.util.Properties 不起作用。 maven 汤姆猫 8

java - 无效参数 1 : Parameter index is out of range. Java Spring

java - 意外删除 Maven 依赖项中的所有子模块

spring-boot - `servletRequest cannot be null` -> SpringBoot - WebClient - 使用 Keycloak 获取请求

java - 如何禁用 undertow 的自动配置

java - 如何确保 INSERT INTO 不会在 mySQL 数据库上添加相同的值

java - 'Collections.sort()'如何使用 'compare()'方法的结果?

java - 找不到类型的匹配 bean ... 依赖项