在别人的项目中看到这个注解,通过查官方文档终于弄明白了。
@Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.TYPE, ElementType.METHOD }) @Documented @Conditional(OnPropertyCondition.class) public @interface ConditionalOnProperty { String[] value() default {}; String prefix() default ""; String[] name() default {}; String havingValue() default ""; boolean matchIfMissing() default false; }Conditional 一般配合configuration使用,可以控制是否让字段或者类在项目中生效。一般我们主要使用name和havingValue属性。name用来从application.properties中读取某个属性值,如果该值为空,则返回false;如果值不为空,则将该值与havingValue指定的值进行比较,如果一样则返回true;否则返回false。如果返回值为false,则该configuration不生效;为true则生效。 其中havingValue的值一般是
Property ValuehavingValue=""havingValue=“true”havingValue=“false”havingValue=“foo”trueyesyesnonofalsenonoyesnofooyesnonoyes