關於springboot加載yml配置文件的no字段自動轉義問題

加載yml配置文件的no字段自動轉義

項目上線瞭才發現一個字段被轉義瞭,如下圖:

本來應該會拿到no字段和數據進行比對的,結果發現比對完的數據這個字段全是null,debug才發現這個字段這麼寫在加載yml文件之後自動變成瞭"false",第一次發現這個問題,修改很方便,把yml文件裡面這個no,換成'no'就可以不被轉義成"false"瞭,謹以此提醒,小錯誤導致臨時調整一次上線。。。。

springboot配置文件自動轉譯的坑

在使用SpringBoot配置文件時遇到的問題,當使用yaml作為配置文件時將batchEmail.task.switch 設置為 ON

#批量定時發送郵件配置
  batchEmail:
    task:
      size: 1000
      switch: ON

則在JAVA代碼中通過 @Value取值

  @Value("${batchEmail.task.switch}")
  private String batchEmailTaskSwitch;

會得到自動轉譯的Boolean值

經過測試,若想取得字符串"ON" 須將配置文件做如如下修改

#批量定時發送郵件配置
  batchEmail:
    task:
      size: 1000
      switch: "ON"

ON加瞭雙引號後,取值正常

小結一下

約定大於配置,這是springboot最大的特點,所以在使用配置文件定義屬性時,應該嚴格遵循配置文件的格式要求,定義的字符串必須加雙引號,否則想yes、no、off、on之類的字符會被轉譯為Boolean串。

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: