为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

杨魅力 2023-04-13 10:21:11
应用.ymlmobile-type:   mobile-codes:     BlackBerry: BBSS     Samsung: SAMS     Samsung+Vodafone: SAMSVV从应用程序 yml 文件中读取 (Samsung+Vodafone)key 时,我们得到了。连接的字符串格式为 'SamsungVodafone' 。此外,我们尝试过 "Samsung'/+'Vodafone": SAMSVV 但结果是一样的,我们还尝试了其他符号,例如 '-',所以它工作正常。用于从应用程序 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
查看完整描述

2 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

使用方括号不要转义任何字符并用双引号对其进行编码


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


查看完整回答
反对 回复 2023-04-13
?
白衣非少年

TA贡献1155条经验 获得超0个赞

请记住,左侧是一个 yml 密钥,而不是任意字符串。我的建议或您的用例是在右侧都有一张地图,例如:

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

你将不得不稍微改变你的类结构,但你实际上可以从中重建你的初始方法。


查看完整回答
反对 回复 2023-04-13
  • 2 回答
  • 0 关注
  • 288 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信