这是一个古老的问题,但是如果其他人(例如我)最终在这里寻找此信息,我会回答。
实际上,不是“翻译” OS环境变量,而是“ Spring”属性名称。
该名称以几种方式转换,并根据可用的环境变量进行查找。例如,“ hibernate.format.sql”查找为:
然后与大写相同:
尽管不能使用set或export命令在名称中设置带点的环境变量,但是可以使用env命令。我推迟判断这是否是一个好主意:
env "my.dotted.name=\"a value\"" the-command-you-want-to-run
有关详细信息,请查看SystemEnvironmentPropertySource.java。我链接到特定版本,但您应确保查看所使用的版本。
要解决生产环境中的这类问题,您可以尝试为属性解析代码打开调试日志记录:
logging:
level:
org.springframework.core.env: DEBUG
…或通过设置适当的环境变量:)