Spring无法解析命令行参数

时间:2018-01-05 11:19:57

标签: java spring spring-mvc spring-boot

我正在将一个非常遗留的应用程序迁移到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中无效,对不起有误解

2 个答案:

答案 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文件

中定义的属性