Springboot - @ConfigurationProperties再次入坑^_^

    平時在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自己試試吧^_^;;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章