【问题标题】:Spring upper case format for system properites as environment variables系统属性的Spring大写格式作为环境变量
【发布时间】:2019-08-14 23:26:22
【问题描述】:

Spring Boot 文档间接提到可以通过相应的操作系统环境变量“设置”系统属性:

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

大写格式,在使用系统环境变量时推荐使用。

如果您使用环境变量而不是系统属性,大多数操作系统不允许使用句点分隔的键名,但您可以使用下划线代替(例如,SPRING_CONFIG_NAME 代替 spring.config.name)。

环境变量。下划线作为分隔符的大写格式。 _ 不应在属性名称中使用

您还应该知道,由于@Value 不支持宽松绑定,因此如果您需要使用环境变量来提供值,则它不是一个好的选择。

我很好奇它只是 Spring Boot 的功能还是纯 Spring 也支持 sys props 的大写 env var 语法?

【问题讨论】:

  • spring 支持,spring-boot 只是模板

标签: spring spring-boot


【解决方案1】:

在评论中提出建议后,我挖掘了Environment 源代码并发现:

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/env/SystemEnvironmentPropertySource.html

专为与系统环境变量一起使用而设计的 MapPropertySource 的专门化。 补偿 Bash 和其他 shell 中不允许包含句点字符和/或连字符的变量的约束;还允许属性名称的大写变体,以便更惯用的 shell 使用

【讨论】:

    猜你喜欢
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 2020-04-03
    • 2015-03-16
    • 1970-01-01
    • 2012-07-03
    相关资源
    最近更新 更多