我已经配置了一个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时一切正常。
答案 0 :(得分:0)
在您的应用程序属性中,使用$ simple {username}和$ simple {password}告诉Camel将值放在那里。