解讀@ConfigurationProperties使用時(shí)的幾個(gè)常見(jiàn)誤區(qū)
@ConfigurationProperties使用時(shí)幾個(gè)常見(jiàn)誤區(qū)
1、@ConfigurationProperties可以讀取properties文件
但不可以讀取yml或者yaml文件(可以讀取application.yaml/yml)
2、使用@ConfigurationProperties(prefix=“demo”)
結(jié)合@PropertySource指定文件名為xxx.properties時(shí),如果application.properties/yaml/yml配置文件里存在以demo為前綴的字段,并且字段相匹配,
讀取到的數(shù)據(jù)將會(huì)是application.properties/yaml/yml文件中的,此時(shí)指定xxx.properties無(wú)效;
并且application.properties優(yōu)先級(jí)高于application.yaml/yml
3、@ConfigurationProperties(prefix=“demoAbc”)
不論是properties/yaml/yml哪種文件,prefix都不能以駝峰形式命名,否則會(huì)報(bào)錯(cuò),找不到該前綴,全小寫(xiě)形式就可以
4、使用@ConfigurationProperties時(shí)
必須使用lombok的@Data注解,或者自己手動(dòng)加入字段的set、get 方法,
否則獲取到的值全為null,該注解沒(méi)有通過(guò)@Value來(lái)顯式讀取數(shù)據(jù),底層可能通過(guò)set、get方法來(lái)獲取值。
5、@ConfigurationProperties作用的類
限定prefix=demo時(shí),如果配置文件中沒(méi)有demo.xxxa,而該類中定義了字段String xxxa時(shí),默認(rèn)該字段為null,不會(huì)報(bào)錯(cuò);
就算找不到匹配的prefix,也會(huì)默認(rèn)將所有字段置為null
6、@ConfigurationProperties的ignoreUnknownFields 屬性默認(rèn)=true的
如果為false,當(dāng)配置文件中有字段demo.xxxb,而類中沒(méi)有xxxb字段時(shí),將會(huì)報(bào)錯(cuò)。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章

Java 使用Docker時(shí)經(jīng)常遇到的五個(gè)問(wèn)題

java中@JsonFormat和@JSONField的使用方法詳解

在Java SE上使用Headless模式的超級(jí)指南

Java實(shí)現(xiàn)循環(huán)體的過(guò)濾器的方法

MyBatis分頁(yè)查詢返回list的時(shí)候出現(xiàn)null的問(wèn)題

Java程序部署到服務(wù)器上,接口請(qǐng)求下載文件失敗/文件為空/文件名不對(duì)的問(wèn)題

解讀@Scheduled任務(wù)調(diào)度/定時(shí)任務(wù)非分布式

java jdbc連接mysql數(shù)據(jù)庫(kù)實(shí)現(xiàn)增刪改查操作