我有一个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设置的值。
我已经阅读了其他一些帖子,但没有看到这样的问题。设置环境变量有效,但这不是一个可供使用的选项。
这会奏效
<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"/>
任何系统参数都会自动添加到环境中。
感谢您的帮助,我发现问题是,使用IntelliJ,在运行配置中设置的属性在代码中无法访问,但是使用gradle运行它,它是可访问的。