平時在application.yml中配置並讀取參數的時候,@ConfigurationProperties這個註解總是必不可少的,例如:
adaptor:
request:
queueSize: 1000
imp:
hotReloadDelay: 60
threadPool:
corePoolSize: 20
maximumPoolSize: 60
keepAliveTime: 60
queueSize: 1000
alarmSending:
threadPool:
corePoolSize: 5
maximumPoolSize: 20
queueSize: 2000
keepAliveTime: 60
timeout: 500
retry:
MessageRetry: true
PayloadExpirationTime: 10
RetryInterval: 5
PayloadDiscardDirectory: /home/ec2-user/daopinz/discard/
代碼讀取的地方是這樣的:
@Value("${adaptor.alarmSending.retry.MessageRetry}")
private boolean messageRetry = false;
@Value("${adaptor.alarmSending.retry.PayloadExpirationTime}")
private int payloadExpirationTime = 5;
@Value("${adaptor.alarmSending.retry.RetryInterval}")
private int retryInterval = 5;
@Value("${adaptor.alarmSending.retry.PayloadDiscardDirectory}")
private String PayloadDiscardDirectory;
這裏有一個小問題;${adaptor.alarmSending.retry.PayloadDiscardDirectory}這裏寫的是絕對路徑,讀取會有問題哦~
那麼換個方式唄,@ConfigurationProperties註解就可以”閃亮登場“咯,
@Service
@ConfigurationProperties(prefix = "adaptor.alarmSending.retry")
... ...
private String payloadDiscardDirectory;
public String getPayloadDiscardDirectory(){return payloadDiscardDirectory;}
public void setPayloadDiscardDirectory(String payloadDiscardDirectory){
this.payloadDiscardDirectory = payloadDiscardDirectory;
}
@ConfigurationProperties
是讓開發人員比較容易地將整個文件映射成一個對象 ;
基本用法非常簡單:我們爲每個要捕獲的外部屬性提供一個帶有字段的類。請注意以下幾點:
- 前綴定義了哪些外部屬性將綁定到類的字段上
- 根據 Spring Boot 寬鬆的綁定規則,類的屬性名稱必須與外部屬性的名稱匹配
- 我們可以簡單地用一個值初始化一個字段來定義一個默認值
- 類本身可以是包私有的
- 類的字段必須有公共 setter 方法
是不是也挺簡單的呢,寫個demo自己試試吧^_^;;