当前位置: 首页 > 知识库问答 >
问题:

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

汪驰
2023-03-14

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

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

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

我很好奇这是否只是Spring Boot的特性,还是plain Spring也支持sys道具的大写env var语法?

共有1个答案

佴阳辉
2023-03-14

在评论中提出建议后,我深入研究了Environment源代码,发现:

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

设计用于系统环境变量的MapPropertySource的专门化。补偿Bash和其他shell中不允许包含句点字符和/或连字符的变量的约束;还允许在属性名上进行大写变体,以便更好地使用shell。

 类似资料:
  • 问题内容: JVM中的系统属性System.getProperties()和环境变量System.getenv()有什么区别? 问题答案: 我认为两者之间的区别归结为访问。系统环境变量可以由任何进程访问,而Java系统属性只能由添加到它们的进程访问。 另外,正如Bohemian所说,env变量是在OS中设置的(但是可以通过Java设置),而系统属性则作为命令行选项传递或通过设置setPropert

  • 我需要的是一种适当的方法,让这个方法获得值。 将这个“sdk.root”放在哪里,以便IntelliJ提取它?在属性文件中还是在bash中?

  • 问题内容: Java是否具有默认的“系统环境变量”,当我们设置它时将始终读取/附加它?/ etc似乎仅适用于TOMCAT / JBOSS等。 我不想通过Java系统属性(通过-Dprop1 = value1 -Dprop2 = value2传递)来设置它,因为它涉及shell / batch脚本。 它应可跨操作系统使用,例如Windows中的双击jar文件。 它应该可以在不同的JRE(Sun,IB

  • 问题内容: 我对此不清楚。当我运行Java App或在小程序查看器中运行小程序时(在IDE环境中), 给我的含义与env变量中定义的CLASSPATH 相同。 但是,当我将applet部署到Web服务器并从与客户端相同的计算机上访问它时,两者的结果不同。(仅指向JRE主页,并返回null)。 还有其他一些让我感到奇怪的事情: 对于小程序部分,即env var JAVA_HOME,在将小程序部署到浏

  • 我试图从系统属性中读取日志配置中的变量,但没有成功。我定义了一个非常简单的logback.groovy,如下所示: 然后是一个简单的test.scala: 注意,当我在日志文件中定义USER_HOME时,它工作得很好

  • 我想编写一些测试,检查部署的WAR的XML Spring配置。不幸的是,有些bean需要设置一些环境变量或系统属性。在使用@ContextConfiguration的方便测试样式时,如何在spring bean初始化之前设置环境变量?