java - 如何在springboot中从application.yml中读取带有特殊字符的属性
问题描述
应用程序.yml
mobile-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
解决方案
使用方括号不要转义任何字符并将其编码为双引号
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
推荐阅读
- amazon-s3 - Can I "link" my Lambda's temp directory to S3 bucket?
- python - What is the difference between plt.plot() and ax.plot()?
- python - How to pyinstall a python file to run without terminal (Mac)
- caffe - Caffe error: can't use pretrained prototxt and caffemodel with caffe.Net
- python - 在 Python 中打开 .mat 文件的子部分
- html - H1 goes behind the background image
- c# - 代码的执行次数(有执行次数和协程限制)
- flutter - Flutter Hot Reload causing Navigator.push() to be called disrupting the state of app
- java - Can´t use intent to move data to another activity
- text-to-speech - Text to Speech in a jScript Program not running in Browser