当前位置:  开发笔记 > 编程语言 > 正文

如何通过环境变量在名称中设置带下划线的Spring Boot属性?

如何解决《如何通过环境变量在名称中设置带下划线的SpringBoot属性?》经验,为你挑选了1个好方法。

我想hibernate.format_sql在Spring Boot应用程序中设置.我想使用环境变量来设置它.

Spring Boot相当轻松地将所有环境变量从例如Spring内容中FOO_BAR_BAZ调用foo.bar.baz的属性转换为.

如何使用环境变量在Spring Boot中设置目标名称中包含下划线的属性?想必HIBERNATE_FORMAT_SQL会被翻译成hibernate.format.sql



1> Max..:

这是一个老问题,但我会回答它,以防其他人(像我一样)最终在这里寻找这些信息.

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

...或者通过设置适当的环境变量:)

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有