Spring Cloud Config с Spring Boot 1.4.5 - приоритет зашифрованных свойств - PullRequest
0 голосов
/ 06 июня 2018

Мы используем Spring Cloud Config уже более 3 лет и хорошо понимаем порядок приоритета в свойствах конфигурации Spring между bootstrap.yml, application.yml, свойствами теста, переменными среды, свойствами системы и профилями Spring.По крайней мере, так было до тех пор, пока мы не столкнулись с этим вопросом сегодня.Мы используем Spring Boot 1.4.5.

У меня есть два свойства, определенные в моем application.yml, как показано ниже:

property: one: foobar two: "{cipher}s0m3encRypt3dv4lu3d0td0td0t"

Если я запускаю Spring BootПриложение и распечатать значения этих двух свойств, я вижу следующее - все, как и ожидалось:

property.one=foobar property.two=DecryptedValue

Теперь, если я попытаюсь переопределить эти два свойства через свойства системы (используя-D или в качестве аргумента программы с --) я вижу некоторые интересные результаты:

java -Dproperty.one=barfoo -Dproperty.two=WontWork -jar my-spring-boot-app.jar

ИЛИ

java -jar my-spring-boot-app.jar --property.one=barfoo -property.two=WontWork

При этом, когда я печатаю свойства в моем приложении, я вижу следующие значения:

property.one=barfoo property.two=DecryptedValue

Как видите, property.one переопределяется, как и ожидалось, но property.two нет;последний выбрал значение из application.yml.

Когда я перехожу к конечной точке / env моего приложения Spring Boot, я вижу, что свойства decrypted отображаются вверху списка, что заставляет меня задуматьсячто когда я определяю зашифрованное свойство, его значение в application.yml всегда получает приоритет над любыми попытками переопределить значение этого свойства позже .

Я не смог найти никаких ссылок на этов документации Spring Cloud Config или Spring Boot.Если кто-нибудь может сказать мне, если (1) это ошибка с возможным исправлением в более поздних версиях, и / или (2) есть способ переопределить это поведение.

...