一.@ConditionalOnProperty的作用和用法
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE, ElementType.METHOD })
@Documented
@Conditional(OnPropertyCondition.class)
public @interface ConditionalOnProperty {
/**
* 数组,获取对应property名称的值,与name不可同时使用。
*/
String[] value() default {};
/**
* property名称的前缀,可有可无,根据事情情况进行配置。
* 前缀将会应用于每个属性的前缀。如果未指定,前缀将自动结束.
*/
String prefix() default "";
/**
* 数组,property完整名称或部分名称(可与prefix组合使用,组成完整的property名称),与value不可同时使用。
String[] name() default {};
/**
* 可与name组合使用,比较获取到的属性值与havingValue给定的值是否相同,相同才加载配置。
*/
String havingValue() default "";
/**
* 缺少该property时是否可以加载。如果为true,没有该property也会正常加载;反之报错
*/
boolean matchIfMissing() default false;
}
#可以使配置文件生效
@EnableConfigurationProperties({SpringBootProperties.class})
#在加载配置的类之后再加载当前类
@AutoConfigureAfter
#这两个注解一起使用的意思,当没有返回的目标类型就会创建实例
@Bean
@ConditionalOnMissingBean
#在创建实例之前会执行当前方法
@PostConstruct