如何通过环境变量设置名称中带有下划线的Spring Boot属性?
我想hibernate.format_sql
在Spring Boot" title="Spring Boot">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
…或通过设置适当的环境变量:)
以上是 如何通过环境变量设置名称中带有下划线的Spring Boot属性? 的全部内容, 来源链接: utcz.com/qa/432801.html