Spring读取基于环境的属性

时间:2018-02-28 13:21:19

标签: java spring properties configuration

我有一个spring项目(不是spring boot),我有3个基于环境的属性文件和1个主要属性文件。 每次启动时都会读取application.properties,但是当我使用-Denv = dev运行应用程序时,我希望读取application-dev.properties。

我使用以下配置运行gradle tomcatRunWar的appliaction: run configurations

我的commonContext.xml设置如下:

  <bean id="configProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer ">
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="ignoreResourceNotFound" value="true"/>
<property name="locations">
  <list>
    <value>classpath:conf/application.properties</value>
    <value>classpath:conf/application-#{systemProperties['env']}.properties</value>
  </list>
</property>
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
<property name="searchSystemEnvironment" value="true"/>

但是在日志中它只是说“conf / application-.properties无法打开,因为它不存在”,所以它不会读取我用-Denv = dev设置的值。

我已经阅读了其他一些帖子,但没有看到这样的问题。 设置环境变量有效,但这不是一个可以使用的选项。

2 个答案:

答案 0 :(得分:0)

这将有效

<value>classpath:conf/application-${env}.properties</value>

任何系统参数都会自动添加到环境中。

答案 1 :(得分:0)

感谢您的帮助,我发现问题在于,使用IntelliJ,运行配置中设置的属性在代码中无法访问,但是使用gradle运行它是可以访问的。