首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Spring applicationContext中读取系统环境变量

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

Stack Overflow用户
提问于 2010-10-19 12:57:55
回答 12查看 316.7K关注 0票数 119

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

我想要这样的东西:

代码语言:javascript
复制
<util:properties id="dbProperties"
        location="classpath:config_DEV/db.properties" />

代码语言:javascript
复制
<util:properties id="dbProperties"
        location="classpath:config_QA/db.properties" />

取决于环境的不同。

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

代码语言:javascript
复制
<util:properties id="dbProperties"
        location="classpath:config_${systemProperties.env}/db.properties" />

其中,实际val是根据系统环境变量设置的

我使用的是Spring3.0

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2010-10-19 14:07:33

检查this article。它为您提供了几种方法,通过支持外部属性的PropertyPlaceholderConfigurer (通过systemPropertiesMode属性)。

票数 51
EN

Stack Overflow用户

发布于 2010-10-19 14:02:13

很接近:o) Spring3.0添加了Spring Expression Language。您可以使用

代码语言:javascript
复制
<util:properties id="dbProperties" 
    location="classpath:config_#{systemProperties['env']}/db.properties" />

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

另请注意@yiling的评论:

为了访问系统环境变量,也就是操作系统级变量,我们可以简单地在EL中使用"systemEnvironment“而不是"systemProperties”。像#{systemEnvironment['ENV_VARIABLE_NAME']}

一样

票数 108
EN

Stack Overflow用户

发布于 2015-04-20 18:09:57

现在你可以把

代码语言:javascript
复制
@Autowired
private Environment environment;

在您的@Component@Bean等中,然后通过Environment类访问这些属性:

代码语言:javascript
复制
environment.getProperty("myProp");

@Bean中单个属性的

代码语言:javascript
复制
@Value("${my.another.property:123}") // value after ':' is the default
Integer property;

是方便的@ConfigurationProperties beans的另一种方式:

代码语言:javascript
复制
@ConfigurationProperties(prefix="my.properties.prefix")
public class MyProperties {
  // value from my.properties.prefix.myProperty will be bound to this variable
  String myProperty;

  // and this will even throw a startup exception if the property is not found
  @javax.validation.constraints.NotNull
  String myRequiredProperty;

  //getters
}

@Component
public class MyOtherBean {
  @Autowired
  MyProperties myProperties;
}

注意:只需记住在设置新的环境变量后重新启动eclipse。

票数 60
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3965446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档