当前位置: 首页 > 面试题库 >

如何在Spring applicationContext中读取系统环境变量

凌通
2023-03-14
问题内容

如何在应用程序上下文中读取系统环境变量?

我想要类似的东西:

<util:properties id="dbProperties"
        location="classpath:config_DEV/db.properties" />

要么

<util:properties id="dbProperties"
        location="classpath:config_QA/db.properties" />

取决于环境。

我的应用程序上下文中可以有这样的东西吗?

<util:properties id="dbProperties"
        location="classpath:config_${systemProperties.env}/db.properties" />

根据系统环境变量设置实际值的地方

我正在使用Spring 3.0


问题答案:

你接近:o)Spring 3.0添加了Spring Expression Language。你可以使用

<util:properties id="dbProperties" 
    location="classpath:config_#{systemProperties['env']}/db.properties" />

结合java ... -Denv=QA应该可以解决你的问题。

还请注意@yiling的评论:

为了访问系统环境变量(即amoe注释的OS级变量),我们可以简单地在该EL中使用“ systemEnvironment”而不是“ systemProperties”。喜欢 #{systemEnvironment['ENV_VARIABLE_NAME']}



 类似资料:
  • 我正在尝试使用在我的Quarkus应用程序中读取环境变量,但没有成功。我认为仅指定变量名应该就足够了,但它不起作用: 我还尝试在应用程序中指定一个属性。属性 读起来就像 但变量始终为空。 我错过什么了吗?在Quarkus中读取环境变量的正确方法是什么 我正在使用Quarkus 1.2.0。最终的

  • 我无法从环境变量中获取值。有很多类似的问题。但没有一个对我有用 应用程序.属性 系统变量 但当我硬编码时,它工作得很好。 更新

  • 我正在使用Postman的打包应用程序版本来针对我的Rest API编写测试。我正在尝试管理连续测试之间的状态。为了方便起见,向Javascript测试运行时公开的Postman对象有设置变量的方法,但没有用于读取的方法。 现在,我可以在下一次调用中通过{{key}}结构读取这个值,该结构从当前环境中获取值。但是,这在测试中不起作用;它只在建筑材料中起作用。 那么,有没有人可以从测试中读到这些东西

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

  • 如果我尝试它将读取当前系统的工作目录,而不是adb设备。 如何通过adb读取Android设备中的?

  • 5.3.1 $%envVarName% 当编译时,$%envVarName% 将会被环境变量 envVarName 替换。