Проблема SpringBoot @ConfigurationProperties с ключом, содержащим /

Я не знаю, нормальное ли это поведение или баг. Я создал ConfigurationProperties:

@Configuration
@ConfigurationProperties("sample")
public class MyConfig {


    private Map<String, String> labels;


    public Map<String, String> getLabels() {
        return labels;
    }

    public void setLabels(Map<String, String> labels) {
        this.labels = labels;
    }
}

И файл Yaml:

sample:
  labels:
    simple: value1
    net.gcuisinier: value2
    net.gcuisinier/env: value3

Но по неизвестной причине карта результатов содержит

simple=value1
net.gcuisinier=value2
net.gcuisinierenv=value3 

Без / в последнем ключе.

Кто-нибудь знает, это нормально? Или это ошибка?

Здесь вы можете найти простой проект, который воспроизводит проблему: https://github.com/gcuisinier/spring-issue


person Gildas Cuisinier    schedule 11.01.2021    source источник
comment
Отвечает ли это на ваш вопрос? Как читать свойства со специальными символами из application.yml в весенней загрузке   -  person Deadpool    schedule 12.01.2021


Ответы (1)


Я думаю, что это нормальное поведение. В документации есть раздел, объясняющий, как сохранить экранированные символы (в вашем случае /).

sample:
  labels:
    simple: value1
    net.gcuisinier: value2
    "[net.gcuisinier/env]": value3

Документация по загрузке Spring: https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config-relaxed-binding-maps

person GuanacoBE    schedule 11.01.2021
comment
Спасибо ! Действительно, я не знал об этом. Я попытался заключить , но не с помощью [ ] ! С этим хорошо работает :-) - person Gildas Cuisinier; 11.01.2021