用于系统属性的Spring大写格式作为环境变量

时间:2019-03-24 15:55:39

标签: spring spring-boot

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

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语法?

1 个答案:

答案 0 :(得分:0)

经过评论建议后,我钻研了Environment源代码并发现:

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

  

专门用于与系统环境变量一起使用的MapPropertySource。 补偿Bash和其他Shell中不允许包含句点字符和/或连字符的变量的约束;还允许在属性名称上使用大写形式的变体,以更方便地使用shell