Spring Boot基于特定条件创建Bean例子 : ConditionalOnMissingBean

本文详细介绍了如何结合使用Spring Boot中的@ConditionalOnMissingBean和@Bean注解来实现Bean的条件化注入,确保只有特定名称或类型的Bean不存在于BeanFactory中时才创建指定的Bean。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结合使用注解@ConditionalOnMissingBean和@Bean,可以做到只有特定名称或者类型的Bean不存在于BeanFactory中时才创建某个Bean :

@Configuration
public class ConditionalOnMissingBeanConfig {

    @Bean
    public A beanA(){
        return new A(); // 无条件定义一个bean : beanA
    }
    
    @Bean
    @ConditionalOnMissingBean(name="beanA")
    public B beanB(){
	    // 如果 beanFactory 中存在一个名称为 beanA 的 bean,才定义bean : beanB;
		// 因为上面的方法已经定义了一个 beanA,所以这里 beanB定义并不会发生。
        return new B(); 
    }
    
    @Bean
    @ConditionalOnMissingBean(name="beanD")
    public C beanC(){
	    // 如果 beanFactory 中存在一个名称为 beanD的 bean,才定义bean : beanC;	    
        return new C(); 
    }
   
}

ConditionalOnMissingBean注解条件匹配所检查的bean定义仅限于spring boot 执行过程中application context截至当前所处理的那些bean,因此,强烈建议仅将 ConditionalOnMissingBean 使用于 auto-configuration 类。另外,如果一个候选 bean 需要在另外一个 auto-configuration 完成之后创建(或者不创建),那么需要确保该 ConditionalOnMissingBean 在那个 auto-configuration 完成之后执行。

注解 ConditionalOnMissingBean 的官方API文档

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值