簡體   English   中英

如何在springboot中從application.yml中讀取帶有特殊字符的屬性

[英]How to read properties with special characters from application.yml in springboot

應用程序.yml

mobile-type:
  mobile-codes:
    BlackBerry: BBSS
    Samsung: SAMS
    Samsung+Vodafone: SAMSVV
  1. 從應用程序 yml 文件中讀取 (Samsung+Vodafone) 密鑰時,我們得到了。 連接字符串格式為 'SamsungVodafone' 。

  2. 此外,我們嘗試過 "Samsung'/+'Vodafone": SAMSVV 但結果是一樣的,我們嘗試了其他符號,例如 '-' 所以它工作正常。

  3. 用於從應用程序 yml 文件中讀取鍵和值。 我們寫了下面的代碼。

import java.util.Map;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
 @ConfigurationProperties(prefix = "mobile-type")
    @Component
    public class mobileTypeConfig {


        Map<String, String> mobileCodes;

        public Map<String, String> getMobileCodes() {
            return mobileCodes;
        }

        public void setMobileCodes(Map<String, String> mobileCodes) {
            this.mobileCodes= mobileCodes;
        }
}

注意:Spring Boot 版本 2.0.6.RELEASE

使用方括號不轉義任何字符並將其編碼為雙引號

mobile-type:
  mobile-codes:
    BlackBerry: BBSS
    Samsung: SAMS
    "[Samsung+Vodafone]": SAMSVV

輸出

{BlackBerry=BBSS, Samsung=SAMS, Samsung+Vodafone=SAMSVV}

捆綁

綁定到 Map 屬性時,如果鍵包含小寫字母數字字符或 - 以外的任何內容,則需要使用括號表示法,以便保留原始值。 如果鍵沒有被 [] 包圍,則任何非字母數字或 - 的字符都將被刪除。 例如,考慮將以下屬性綁定到 Map:

acme:
  map:
   "[/key1]": value1
   "[/key2]": value2

請記住,左側是一個 yml 鍵,而不是任意字符串。 我的建議或您的用例是在右側都有一張地圖,例如:

foo:
  - name: "Samsung+Vodafone"
    code: "SAMSVV"
  - name: "BlackBerry"
    code: "BBMS"
  - name: "Samsung"
    codes: 
     - "SAMS"
     - "SMG"

你將不得不稍微改變你的類結構,但你實際上可以從中重建你的初始方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM