Конфигурация Spring Boot YAML с URL-адресом в ключе больше не загружается правильно с версией 2

Я переношу свое приложение с 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 -> https://test.example.org/Endpoint;
  • но с Spring Boot 2.0 двоеточия и косые черты исчезают с ключей карты httpsexample.orgtest -> https://test.example.org/Endpoint.

Я не смог найти упоминания об этом в руководство по миграции. Изменился ли синтаксический анализ YAML в Spring Boot 2? Есть ли лучший способ написать карты YAML с URL-адресами в качестве ключей?


person Kolargol00    schedule 18.06.2018    source источник
comment
Хане, вы пробовали двойные кавычки или обратную косую черту? Синтаксис YAML иногда удивляет.   -  person Konstantin Pelepelin    schedule 18.06.2018
comment
@KonstantinPelepelin Да, я пробовал оба, но мой ключ все еще искажается. Это еще более странно, поскольку та же строка, переданная в org.yaml.snakeyaml.Yaml#load, действительно дает ожидаемый результат...   -  person Kolargol00    schedule 18.06.2018


Ответы (1)


Я должен был проверить проблемы GitHub... кто-то сообщил об подобной проблеме. Решение состоит в использовании «синтаксиса скобок», который, к сожалению, едва задокументировано, заключая ключи в скобки:

myapp
  serviceUrls:
    '[https://example.org/test]': 'https://test.example.org/Endpoint'
person Kolargol00    schedule 19.06.2018