ConditionalOnProperty的使用
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
@Documented
@Conditional({OnPropertyCondition.class})
public @interface ConditionalOnProperty {
String[] value() default {}; //数组,获取对应property名称的值,与name不可同时使用 String prefix() default "";//property名称的前缀,可有可无 String[] name() default {};//数组,property完整名称或部分名称(可与prefix组合使用,组成完整的property名称),与value不可同时使用 String havingValue() default "";//可与name组合使用,比较获取到的属性值与havingValue给定的值是否相同,相同才加载配置 boolean matchIfMissing() default false;//缺少该property时是否可以加载。如果为true,没有该property也会正常加载;反之报错 boolean relaxedNames() default true;//是否可以松散匹配,至今不知道怎么使用的
}
@Configuration
@ConditionalOnProperty(value = "parentName.sonName")
public class parentNameConfig {
}
.yml配置如下:
parentName:
sonName: true //正常
parentName:
sonName: //正常,空字符时
parentName:
sonName: false //失败
parentName:
sonName: null //正常
parentName:
sonName: 123 //正常 把第二行换成:
@ConditionalOnProperty(value = "parentName.sonName",havingValue = "123")
.yml配置如下:
parentName:
sonName: 123 //正常
parentName:
sonName: 1234 //失败
parentName:
sonName: false //失败 把第二行换成:
@ConditionalOnProperty(value = "parentName.sonName",havingValue = "false")
.yml配置如下:
parentName:
sonName: false //正常 把第二行换成:
@ConditionalOnProperty(prefix = "parentName",name = "sonName",havingValue = "123")
.yml配置如下:
parentName:
sonName: 123 //正常
parentName:
sonName: 1234 //失败,与havingValue给定的值不一致 把第二行换成:
@ConditionalOnProperty(prefix = "parentName",name = "sonName",havingValue = "123",matchIfMissing = true)
.yml配置如下:
不配置相关参数 //正常,当matchIfMissing = true时,即使没有该parentName.sonName属性也会加载正常 把第二行换成:
@ConditionalOnProperty(prefix = "parentName",name = "sonName",havingValue = "123",matchIfMissing = false) //这里matchIfMissing默认为false,写不写都行
.yml配置如下:
不配置相关参数 //失败,当matchIfMissing = false时,必须要有对应的property
parentName:
sonName: 123 //正常 把第二行换成:
@ConditionalOnProperty(prefix = "parentName.", name = "sonName")//prefix带了.(点)
.yml配置如下:
parentName:
sonName: true //正常
parentName:
sonName: 123 //正常 把第二行换成:
@ConditionalOnProperty(prefix = "parentName",value = {"sonName2"},name = {"sonName"})
.yml配置如下:
parentName:
sonName: true //项目Debug启动失败,The name and value attributes of @ConditionalOnProperty are exclusive
//@ConditionalOnProperty的name和value属性是互斥的,不能同时出现 把第二行换成:
@ConditionalOnProperty(prefix = "parentName",name = {"sonName"})
.yml配置如下:
parentName:
sonName: true //正常 把第二行换成:
@ConditionalOnProperty(prefix = "parentName",name = {"sonName","flag"}) //name中的属性需要两个都存在且都不为false才会加载正常
.yml配置如下:
parentName:
sonName: true
flag: true //正常
parentName:
sonName: true
flag: 123 //正常
parentName:
sonName: true
flag: false //失败
parentName:
sonName: false
flag: false //失败 把第二行换成:
@ConditionalOnProperty(prefix = "parentName", name = {"sonName", "flag"}, havingValue = "false")
parentName:
sonName: false
flag: false //正常 把第二行换成:
@ConditionalOnProperty(prefix = "parentName", name = {"sonName", "flag"}, havingValue = "123")//parentName.sonName和parentName.flag的值都要与havingValue的一致才行
parentName:
sonName: 123
flag: 1234 //失败
parentName:
sonName: 123
flag: 123 //正常
parentName:
sonName: 123 //失败,缺少parentName.flag 把第二行换成:
@ConditionalOnProperty(prefix = "parentName", name = {"sonName", "flag"}, havingValue = "123",matchIfMissing = true)//matchIfMissing = true允许缺少
parentName:
sonName: 123 //正常
.yml配置如下:
不配置相关参数 //正常 把第二行换成:
@ConditionalOnProperty(prefix = "parentName", name = {"sonName", "flag"}, havingValue = "123")
.yml配置如下:
不配置相关参数 //失败
- 1. Makefile中使用$$的使用
- 2. QMap的key的使用 value的使用
- 3. android中ProgressBar的使用SeekBar的使用和RatingBar的使用
- 4. DoxyGEN 的使用与Graphviz 的使用
- 5. Preference的使用(3) --- 子类的使用
- 6. Libgdx的使用(9)——Box2d的使用
- 7. HttpWatch的使用7.0.23的使用
- 8. CTransparentStatic类的使用 CButton类的使用
- 9. SVN 的使用(二) Eclipse 中的使用
- 10. Collector的使用和MultiReader的使用
ConditionalOnProperty的使用的更多相关文章
- Spring ConditionalOnProperty
Spring Annotation @ConditionalOnProperty spring doc解释 @Conditional: Indicates that a component is on ...
- ConditionalOnProperty
配置Spring Boot通过@ConditionalOnProperty来控制Configuration是否生效 1.matchIfMissing属性:从application.properties ...
- @ConditionalOnProperty 详解
@Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD}) @Documented @Con ...
- 配置Spring Boot通过@ConditionalOnProperty来控制Configuration是否生效
Spring boot中有个注解@ConditionalOnProperty,这个注解能够控制某个configuration是否生效. 具体操作是通过其两个属性name以及havingValue来实现 ...
- What is purpose of @ConditionalOnProperty annotation?
http://stackoverflow.com/questions/26394778/what-is-purpose-of-conditionalonproperty-annotation **** ...
- @ConditionalOnProperty来控制Configuration是否生效
1. 简介 Spring Boot通过@ConditionalOnProperty来控制Configuration是否生效 2. 说明 @Retention(RetentionPolicy.RUNTI ...
- @ConditionalOnProperty注解
一 源码解析 查看ConditionalOnProperty的源码 package org.springframework.boot.autoconfigure.condition; import j ...
- Spring Boot中@ConditionalOnProperty使用详解
在Spring Boot的自动配置中经常看到@ConditionalOnProperty注解的使用,本篇文章带大家来了解一下该注解的功能. Spring Boot中的使用 在Spring Boot的源 ...
- @Conditional 和 @ConditionalOnProperty
@ConditionalOnProperty https://blog.csdn.net/dalangzhonghangxing/article/details/78420057 @Condition ...
- Springboot @ConditionalOnProperty注解
最近看了一段代码其中用到了@ConditionalOnProperty注解,直接没有了解过这个注解,今天看到了顺便了解一下 具体代码如下 @Configuration public class Web ...
随机推荐
- 通过tar包解压安装docker
以下步骤在centos7和debian10中验证通过 1.通过官网下载安装包 wget https://download.docker.com/linux/static/stable/x86_64/d ...
- 选择company回显appname
function showSupCompany() { var obj = {}; obj.label = ScompanyId.getSelectedLabel(); obj.value = Sco ...
- leetcode 140 单词拆分2 word break II
单词拆分2,递归+dp, 需要使用递归,同时使用记忆化搜索保存下来结果,c++代码如下 class Solution { public: //定义一个子串和子串拆分(如果有的话)的映射 unorder ...
- Random Initialization for K-Means
K-Means的中心初始化惯用方式是随机初始化.也就是说:从training set中随机挑选出K个 作为中心,再进行下一步的K-Means算法. 这个方法很容易导致收敛到局部最优解,当簇个个数(K) ...
- 写python获取android设备的GPS及姿态信息
在android上,我们可以使用QPython来编写.执行Python脚本.它对很多android 系统函数进行了方便的封装,使用QPython编写功能简单的小程序异常方便. 这个示例是我之前用来读取 ...
- flutter stack嵌套,appbar透明,Container设置背景图片并且图片在appbar之下
stack嵌套 一般情况下 stack是无法嵌套,出现stack嵌套,布局就会出乱 解决方式:就是第二个stack需要确定宽高 appbar透明 AppBar( backgroundColor: Co ...
- 阶段3 2.Spring_07.银行转账案例_2 案例中添加转账方法并演示事务问题
使用xmlioc这个项目进行完善. 创建一个新的工程把之前的代码都复制过来. 复制pom.xml内的依赖项 java下的com包复制过来. 配置文件复制过来 测试类固执过来 内容进行删减 测试类的方法 ...
- line-height 与 height 的区别
line-height是行高的意思,它决定了元素中文本内容的高度,height则是定义元素自身的高度. height:表示 行高 line-height:表示 每行文字所占的高度 举例: 第 ...
- python基础学习笔记-切片难点
numbers = [1,2,3,4,5,6,7,8,9,10] print(numbers[5::-2]) print(numbers[10:5:-2]) print(numbers[:5:-2]) ...
- Unity 动画属性
在动画的使用上使用不当的设置往往会造成不可预料的结果. 首先,如果动画自身可以驱动物体移动,那么在Animator组件上必须选择apply root motion,物体的动画位移才能生效,否则动画只能 ...