无法使用外部文件

时间:2015-11-06 12:16:43

标签: spring spring-boot apache-camel spring-properties

我已经配置了一个config.xml文件,根据环境选择适当的属性文件。我使用Apache Camel作为Spring Boot应用程序运行它。

配置看起来像这样。

<bean id="properties"
    class="org.apache.camel.component.properties.PropertiesComponent">
    <property name="locations" ref="locations" />
</bean>

<bean id="bridgePropertyPlaceholder"
    class="org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer">
    <property name="locations" ref="locations" />
    <property name="ignoreUnresolvablePlaceholders" value="true" />
</bean>

<beans profile="dev">
<util:list id="locations">
    <value>classpath:config/users.properties</value>
    <value>classpath:config/application.properties</value>
    <value>classpath:config/application-dev.properties</value>
</util:list>

<beans profile="test">
<util:list id="locations">
    <value>file:${project.dir}/config/users.properties</value>
    <value>file:${project.dir}/config/application.properties</value>
</util:list>

使用测试配置文件时,我想使用配置中定义的外部文件(因为我不想将用户名/密码提交到repo)。这似乎没问题。

但是,我的users.properties文件包含:

username=myusername
password=mypassword

我的application.properties包含:

loginParameters=username=${username}&password=${password}

在遇到java -jar myjar.jar --spring.profiles.active=test时遇到:

java.lang.IllegalArgumentException: Could not resolve placeholder 'username' in string value '${username}&password=${password}'

它显然加载属性文件,因为它声明:

Loading properties file from URL: file:...../users.properties
Loading properties file from URL: file:...../application.properties
Bridging Camel and Spring property placeholder configurer with id: bridgePropertyPlaceholder
...

然后发生异常。如何解决application.properties文件无法识别users.properties中定义的属性的问题?运行dev-profile时一切正常。

1 个答案:

答案 0 :(得分:0)

在您的应用程序属性中,使用$ simple {username}和$ simple {password}告诉Camel将值放在那里。