我正在将一个非常遗留的应用程序迁移到Spring Boot。它配置了xml,我在那里有以下片段:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="localOverride" value="true"/>
<property name="locations">
<list>
<value>classpath:conf/${ENV}/some.properties</value>
</list>
</property>
</bean>
我正在使用以下命令行启动应用程序:
mvn spring-boot:run -Dserver.port=22222 -DENV=int
但它在启动时失败并显示以下消息:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'ENV' in value "classpath:conf/${ENV}/some.properties"
之前有效,现在我已经spring-boot-starter-web
。
有什么建议吗?提前谢谢!
更新:它在@PropertySource
中无效,在xml中无效,对不起有误解
答案 0 :(得分:1)
使用maven spring boot插件运行应用程序时(就像你正在做的那样)你需要像这样指定
mvn spring-boot:run -Drun.arguments="--server.port=22222, --ENV=int"
如果要使用java -jar
命令运行应用程序。这是方式
java -jar -Dserver.port=22222 -DENV=int XYZ.jar
答案 1 :(得分:0)
您应该使用#systemEnvironment['propertyName']
或
#{systemProperties['propertyName']}
<value>classpath:conf/#{systemEnvironment['ENV']/some.properties</value>
由于
${propertyName}
您只能访问.properties
文件