gpt4 book ai didi

Spring 应用程序属性忽略字符串中的斜杠

转载 作者:行者123 更新时间:2023-12-04 01:54:30 28 4
gpt4 key购买 nike

在使用 application.yaml 将外部属性加载到 spring boot (2.0.3.RELEASE) 应用程序时,我遇到了一个奇怪的行为。我将在下面展示一个最小的例子。我定义了一个 @ConfigurationProperties 类,如下所示:

@Component
@ConfigurationProperties
class ConfigProperties {
var testString: String = ""
var testMap : MutableMap<String, String> = mutableMapOf()
}

我还有一个足够的 application.yaml 文件:

testString: "/profile/test"
testMap:
"/profile/main" : "Welcome/to/profile"

评估时,ConfigProperties.testString 会按预期生成 /profile/test,但 ConfigProperties.testMap 会生成大小为 1 的 map ,只有条目的键设置为 profilemain,值设置为 Welcome/to/profile。为什么键会忽略正斜杠 (/) 但值会正确解析?我尝试转义正斜杠,但这没有用。我还发现其他特殊字符,如冒号 (:) 和反斜杠 (\) 也会被映射键忽略。

最佳答案

我知道这是旧的,但如果有人想知道,这就是它在 spring boot 2 中的工作方式。

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide#relaxed-binding

For map keys with non-alphanumeric characters (other than -) in them, surround the key name with []. For example:
spring:
my-example:
'[foo.baz]': bar
'[abc xyz]': def

关于Spring 应用程序属性忽略字符串中的斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51289856/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com