带有Spring Boot 1.4.5的Spring Cloud Config - 加密属性的优先级

时间:2018-06-06 01:17:15

标签: spring-boot spring-cloud-config

我们已经使用Spring Cloud Config超过3年了,并且已经很好地理解了bootstrap.ymlapplication.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

OR

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中选择了值。

当我转到Spring Boot应用程序的/ env端点时,我发现decrypted属性显示在列表顶部,让我在定义加密属性时认为是,它application.yml中的值始终优先于以后重写该属性值的任何尝试

我在Spring Cloud Config或Spring Boot文档中找不到任何引用。如果有人可以告诉我(1)这是否是在以后版本中可能修复的错误,和/或(2)有一种方法可以覆盖此行为。

0 个答案:

没有答案