ConditionalOnBean详解及ConditionalOn××总结

文章介绍了在Springboot开发中,如何利用@ConditionalOnBean注解来实现Bean的条件注入。当指定的Bean(如School)存在时,才会注入StudentBean。通过示例代码展示了在有无SchoolBean的情况下,StudentBean的不同注入情况。

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

@ConditionalOnBean详解

为什么学习@ConditionalOnBean

在学习 Springboot 自动装配的时候遇到 Bean 装配和 Bean 配置需要条件判断的场景时,查阅了相关内容了解到 @Conditional 和 @ConditionalOnBean 注解,深入学习之后受益匪浅。

@ConditionalOnBean测试

如果要完成 Student 类往 Spring 容器中注入时,判断 School 存在时注入,不存在则不注入。
Student 类:

@Data
@AllArgsConstructor
public class Student {
	private String name;
}

School 类:

@Data
@AllArgsConstructor
public class School {
	private String name;
}

配置类:

@Configuration
public class BeanConfiguration {

	@ConditionalOnBean(School.class)
    @Bean("zhangsan")
    public Student student() {
        return new Student("张三");
    }
}

当注入 School 时测试启动类:

@Configuration
public class BeanConfiguration {

    @Bean
    public School school() {
        return new School("清华大学");
    }

    @ConditionalOnBean(School.class)
    @Bean("zhangsan")
    public Student student() {
        return new Student("张三");
    }
}

结果:
在这里插入图片描述
当不注入 School 时测试启动类:

@Configuration
public class BeanConfiguration {

//    @Bean
//    public School school() {
//        return new School("清华大学");
//    }

    @ConditionalOnBean(School.class)
    @Bean("zhangsan")
    public Student student() {
        return new Student("张三");
    }
}

结果:
在这里插入图片描述

更多类似的 Conditional 如下

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝带915

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值