@ConditionalOnProperty注解使用

@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初始化");
    }
}

你可能感兴趣的:(Spring)