我想hibernate.format_sql
在Spring Boot应用程序中设置.我想使用环境变量来设置它.
Spring Boot相当轻松地将所有环境变量从例如Spring内容中FOO_BAR_BAZ
调用foo.bar.baz
的属性转换为.
如何使用环境变量在Spring Boot中设置目标名称中包含下划线的属性?想必HIBERNATE_FORMAT_SQL
会被翻译成hibernate.format.sql
?
这是一个老问题,但我会回答它,以防其他人(像我一样)最终在这里寻找这些信息.
HIBERNATE_FORMAT_SQL应该可以解决问题
实际上,它不是"已翻译"的OS环境变量,而是Spring属性名称.
该名称以多种方式进行翻译,并针对可用的环境变量进行查找.例如,"hibernate.format.sql"被查找为:
hibernate.format.sql(按原样)
hibernate_format_sql(以下划线替换的点)
hibernate_format_sql(破折号替换为下划线,在您的情况下相同)
hibernate_format_sql(用下划线替换破折号和点,在您的情况下相同)
然后与大写相同:
HIBERNATE.FORMAT.SQL(原样)
HIBERNATE_FORMAT_SQL(点用下划线代替)
HIBERNATE_FORMAT_SQL(用下划线替换破折号,再次相同)
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
...或者通过设置适当的环境变量:)