网站设计的初衷,改图宝在线编辑图片,公司网站建设制作全包,如何搭建一个网站开发环境SpringBoot ConditionalOnProperty 注解 简介 ConditionalOnProperty#xff1a;根据属性值来控制类或某个方法是否需要加载。它既可以放在类上也可以放在方法上。 ConditionalOnProperty属性 Retention(RetentionPolicy.RUNTIME)
Target({ ElementType.TYPE, ElementType.MET…SpringBoot ConditionalOnProperty 注解 简介 ConditionalOnProperty根据属性值来控制类或某个方法是否需要加载。它既可以放在类上也可以放在方法上。 ConditionalOnProperty属性 Retention(RetentionPolicy.RUNTIME)
Target({ ElementType.TYPE, ElementType.METHOD })
Documented
Conditional(OnPropertyCondition.class)
public interface ConditionalOnProperty {/*** name别名数组类型获取对应property名称的值与name不能同时使用*/String[] value() default {};/*** 属性前缀未指定时自动以点.结束有效前缀由一个或多个词用点.连接。比如spring.http.encoding* 如spring.datasource*/String prefix() default ;/*** 属性名称配置属性完整名称或部分名称可与prefix组合使用不能与value同时使用*/String[] name() default {};/*** 可与name组合使用比较获取到的属性值与havingValue的值是否相同相同才加载配置*/String havingValue() default ;/*** 缺少该配置属性时是否加载默认为false。如果为true没有该配置属性时也会正常加载反之则不会生效*/boolean matchIfMissing() default false;
}使用方法
ConditionalOnProperty的核心功能是通过属性name以及havingValue来实现的。 matchIfMissing 属性 如果配置文件中未进行对应属性配置时的默认处理默认情况下matchIfMissing为false也就是说如果未进行属性配置则自动配置不生效。 如果matchIfMissing为true则表示如果没有对应的属性配置则自动配置默认生效。 name 属性 从配置文件 application.properties / application.yml中读取某个属性值.
注意matchIfMissing为false时, name 如果为空则返回false如果name 不为空那就会去与havingValue判断。如果一样则返回true反之返回false,返回false 的话就不会去加载了哦 havingValue 匹配属性里的值
非常简单的示例 配置文件 # 是否加载
is_load_bean: trueSlf4j
Configuration
public class LoadConditionalProperty {Value(${is_load_bean})private String isLoadBean;BeanConditionalOnProperty(value is_load_bean,havingValue true,matchIfMissing true)public void loadBean(){log.info(是否加载当前类);}Beanpublic void compareLoadBean(){log.info(加载bean属性 isLoadBean);}
}我们可以通过修改配置文件中is_load_bean的值观察BEAN是否加载。
补充个例子
假如我们需要把User加载到 容器里面。
public class User {
}Slf4j
Configuration
public class UserConfig {BeanConditionalOnProperty(value is_load_bean,havingValue true,matchIfMissing true)public User user(){return new User();}
}最后的最后
像此类的注解还是有很多比如
注解名称说明ConditionalOnClass当Spring加载的Bean被ConditionOnClass注解标记时类加载器会先去先找到指定的Class, 如果没有找到目标Class,那么被ConditionOnClass注解标记的类不会被Spring装载ConditionalOnMissingClass跟上面相反ConditionalOnMissingBean是指如果没有找到目标Class, 那么就装载该类ConditionalOnBean当Spring加载的Bean被ConditionalOnBean注解标记时接下来会先找到指定的Bean,如果没有找到目标Bean,那么被ConditionalOnBean标记的类不会被Spring装载ConditionalOnMissingBean跟上面相反,ConditionalOnMissingBean是指如果没有Class, 那么就装载该Bean。