【发布时间】:2012-08-07 16:20:50
【问题描述】:
我有两个属性文件:
environment.properties:
- project.host.db3.database.name=oracle
application.properties:
- database.name=${project.host.db3.database.name}
第一个代表环境变量,第二个代表要在spring项目中使用的属性,在这个配置中我尝试设置 environment.properties 但当然它不起作用:
<bean id="systemPropertiesLoader"
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" value="#{@systemProperties}" />
<property name="targetMethod" value="putAll" />
<property name="arguments">
<util:properties location="classpath:environment.properties" />
</property>
</bean>
<bean id="propertyPlaceholderConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
depends-on="systemPropertiesLoader">
<property name="locations">
<list>
<value>classpath:application.properties</value>
</list>
</property>
<!-- bean using database.name -->
可行吗?如果不可行,人们如何在他们的项目中拥有不可知的属性(如 database.name),并且只部署一个文件(war、jar 等)?
【问题讨论】:
-
为什么不能直接使用 environment.properties 呢?
-
@yorkw,我开始使用自己的属性,后来才知道我应该从另一个属性文件中提供它们,但我仍然认为我应该将我的属性名称与环境属性隔离
标签: spring maven deployment