Значение конфигурации Spring Boot с расширением .no. или .НЕТ. не заполняется

У меня есть очень простое приложение Spring Boot со свойствами конфигурации, специфичными для конкретной страны, все известные и простые вещи, ничего особенного.

Должно работать в 4 странах DK,SE,FI and NO. Внедрение этих свойств с помощью @Value

Форекс @Value("${app.nds.no.count}"),@Value("${app.nds.se.count}"),@Value("${app.nds.fi.count}") и @Value("${app.nds.dk.count}")

Все работает хорошо, кроме одного с .no. или .NO., возвращается ошибка

Не удалось разрешить заполнитель «app.nds.no.count» в значении « ${app.nds.no.count}"

Я убедился, что файл YML правильный, и если я изменил .no. ключ к любому другому ключу, он будет работать правильно.

Как сохранить структуру ключей неизменной и сделать .no. работа ?

Вы столкнулись с проблемой YAML Норвегии.

Chin Huang 17.05.2024 17:42
0
1
121
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Да/да и Нет/нет преобразуются в true и false соответственно, поэтому мы не можем прочитать упомянутые свойства. К вашему сведению, я использую конфигурацию ниже

app:
  nds:
    no:
      count: 10

Ответ принят как подходящий

На основе комментария @Chin Huang и ответа @vik.

Причина, почему это проблематично, заключается в том, что «Проблема Норвегии» YAML имеет: когда вы сокращаете Норвегию до ее ISO 3166-1 ALPHA-2 формы NO, YAML вернет false при его анализе:

страны:

- DK
- SE
- FI
- NO

    values
    {'countries': ['DK', 'SE', 'FI', False]}

Решение состоит в том, чтобы экранировать .no. или .NO. в одинарных кавычках.

Другие вопросы по теме