Spring读取基于环境的属性

问题描述 投票:2回答:2

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

我用gradle tomcatRunWar运行应用程序,配置如下:qazxsw poi

我的commonContext.xml设置如下:

run configurations

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

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

java spring properties configuration
2个回答
0
投票

这会奏效

  <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"/>

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.