У меня есть очень простое приложение 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. работа ?
Да/да и Нет/нет преобразуются в 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.
в одинарных кавычках.
Вы столкнулись с проблемой YAML Норвегии.