~~~
@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配置如下:
不配置相關參數 //失敗
~~~
- 環境搭建
- maven的安裝
- Eclipse中從svn中檢出maven項目
- 升級JDK9后eclipse無法啟動解決方法
- Maven教程
- spring-boot
- JAVA基礎
- JAVA多線程
- 常見問題
- 怎么解決tomcat占用8080端口問題圖文教程
- 保存到數據庫中亂碼
- idea Tomcat 部署 war和war exploded的區別
- Android
- Android開發之旅:HelloWorld項目的目錄結構
- Android Studio 修改包名最便捷做法
- 2017Android學習路線圖,內附完整自學視頻教程+工具經驗
- Android版本更新知識(檢測、升級)總結
- Android設備唯一碼的獲取
- Android Studio配置打包生成自定義文件名
- 多渠道打包之動態修改App名稱,圖標,applicationId,版本號,添加資源
- JAVA相關技術
- MyBatis 教程
- GUNS后臺管理框架
- 相關技術學習集合
- 開源系統
- 技術博客收藏
- Spring MVC
- Spring MVC微博
- SpringMVC 攔截器不攔截靜態資源的三種處理方式
- 開發工具
- IntelliJ IDE
- IntelliJ IDEA2017 + tomcat 即改即生效 實現熱部署
- IntelliJ IDEA + Tomcat ;On Upate Action 與 On Frame Deactivation
- Shiro
- 跟我學Shiro
- 30分鐘學會如何使用Shiro
- shiro.ini 配置詳解
- Spring
- 談談對Spring IOC的理解
- ConditionalOnProperty的使用
- Tomcat
- Tomcat 部署WAR文件之server.xml Context部署
- Redis
- 使用Jedis源碼生成Jedis.jar
- Nutz
- Nutz-book Nutz烹調向導