@Conditional注解是spring Framework提供的一个核心注解,这个注解的作用是提供条件装配的约束,一般与@Configuration 和@Bean配合使用。
简单来说,就是spring在解析@Configuration标注的配置类时,如果该配置类增加了@Conditional注解,那么spring会根据@Conditional注解中的条件判断是否要装配该配置类。
@Conditional注解的使用:
@Conditional注解的源码如下,该注解可以接收的value值是Condition类型数组
Condition是一个函数式接口,提供matches方法,它主要提供一个条件匹配的规则,返回true,则表示可以注入Bean,反之则不注入。
我们下面来实现一个基于@Conditional注解的条件装配案例:
1、自定义一个Condition,实现Conditon接口,重写matches方法,如果当前的系统是Windows,返回true,否则返回false
2、创建一个配置类,用来装载一个Bean,在CustomBean的声明方法上增加@Conditional(value = {Customcondition.class})注解,条件就是Customcondition类
以上代码表示,如果Customcondition类中的matches方法返回true,则将CustomBean注入到spring容器中
测试上述代码: