猿问

springboot中如何从application.yml中读取带有特殊字符的属性

应用.yml

mobile-type:
  mobile-codes:
    BlackBerry: BBSS
    Samsung: SAMS
    Samsung+Vodafone: SAMSVV
  1. 从应用程序 yml 文件中读取 (Samsung+Vodafone)key 时,我们得到了。连接的字符串格式为 '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


杨魅力
浏览 290回答 2
2回答

ITMISS

使用方括号不要转义任何字符并用双引号对其进行编码mobile-type:&nbsp; mobile-codes:&nbsp; &nbsp; BlackBerry: BBSS&nbsp; &nbsp; Samsung: SAMS&nbsp; &nbsp; "[Samsung+Vodafone]": SAMSVV输出{BlackBerry=BBSS, Samsung=SAMS, Samsung+Vodafone=SAMSVV}捆绑绑定到 Map 属性时,如果键包含小写字母数字字符或 - 以外的任何内容,则需要使用括号表示法以便保留原始值。如果键没有被 [] 包围,则任何非字母数字或 - 的字符都将被删除。例如,考虑将以下属性绑定到 Map:acme:&nbsp; map:&nbsp; &nbsp;"[/key1]": value1&nbsp; &nbsp;"[/key2]": value2

白衣非少年

请记住,左侧是一个 yml 密钥,而不是任意字符串。我的建议或您的用例是在右侧都有一张地图,例如:foo: &nbsp;&nbsp;-&nbsp;name:&nbsp;"Samsung+Vodafone" &nbsp;&nbsp;&nbsp;&nbsp;code:&nbsp;"SAMSVV" &nbsp;&nbsp;-&nbsp;name:&nbsp;"BlackBerry" &nbsp;&nbsp;&nbsp;&nbsp;code:&nbsp;"BBMS" &nbsp;&nbsp;-&nbsp;name:&nbsp;"Samsung" &nbsp;&nbsp;&nbsp;&nbsp;codes:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;"SAMS" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;"SMG"你将不得不稍微改变你的类结构,但你实际上可以从中重建你的初始方法。
随时随地看视频慕课网APP

相关分类

Java
我要回答