@ConditionalOnProperty:Spring Boot通过@ConditionalOnProperty来控制Configuration是否生效。
- 作用:从配置文件中获取某个值,与定义的值比较,决定Bean是否创建;
- 依赖:org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
一、@ConditionalOnProperty注解介绍
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE, ElementType.METHOD })
@Documented
@Conditional(OnPropertyCondition.class)
public @interface ConditionalOnProperty {
String[] value() default {}; // 数组,获取对应property名称的值,与name不可以同时使用
String prefix() default ""; // 配置文件中property名称的前缀,可有可无
String[] name() default {}; // 数组,property完整名称或部分名称(可与prefix组合使用,组成完整的property名称),与value不可同时使用
String havingValue() default ""; // 与name组合使用,比较获取到的属性值与havingValue给定的值是否相同,相同才加载配置
boolean matchIfMissing() default false; // 缺少该property时是否可以加载。如果为true,没有该property也会正常加载;反之报错
boolean relaxedNames() default true; // 是否可以松散匹配
}
}
二、使用方法
@Configuration
@ConditionalOnProperty(prefix = "配置文件前缀", name = "name", havingValue = "http")
public class Test {
public Test() {
// 获取配置文件中name的值,与havingValue比较,如果相同,则加载这个Bean
// 可以配合@Component使用,定时任务使用有奇效
log.info("test初始化");
}
}