一.@ConditionalOnProperty的作用和用法

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