带有URL的URL的Spring Boot YAML配置不再能够在版本2中正确加载

时间:2018-06-18 13:23:41

标签: spring-boot yaml snakeyaml

我正在将我的应用程序从Spring Boot 1.5迁移到2.0,并且其中一个YAML属性不再正确加载。以下配置代码段:

myapp
  serviceUrls:
    'https://example.org/test': 'https://test.example.org/Endpoint'

映射到此配置类:

@ConfigurationProperties(prefix = "myapp", ignoreUnknownFields = false)
public final class MyAppProperties {
  private Map<String, String> serviceUrls = new HashMap<>();
  //[...]
}
  • 使用Spring Boot 1.5,它将加载为https://example.org/test - &gt;的地图https://test.example.org/Endpoint;
  • 但是使用Spring Boot 2.0时,冒号和斜线会从地图键httpsexample.orgtest - &gt;中消失。 https://test.example.org/Endpoint

我在migration guide中找不到任何提及。 Spring Boot 2中的YAML解析是否已更改?有没有更好的方法来编写带有URL作为键的YAML地图?

1 个答案:

答案 0 :(得分:7)

我应该检查GitHub问题......有人报告a similar problem。解决方案是使用&#34;括号语法&#34;,遗憾的是barely documented,将键包装在括号内:

myapp
  serviceUrls:
    '[https://example.org/test]': 'https://test.example.org/Endpoint'