一.@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