几种方法:
1。 “订单”属性
在src/main/resources/your-conf.xml
<context:property-placeholder
location="classpath:esb-project-config.properties"
order="1"/>
在src/test/resources/your-test-config.xml
<context:property-placeholder
location="classpath:esb-project-config.properties"
order="0"/>
如果您使用src/test/resources 作为测试类路径运行测试,以上将确保使用src/test/resources/esb-project-config.properties 覆盖src/main/resources/esb-project-config.properties。
这将覆盖整个property-placeholder,因此您必须提供应用程序中所需的所有属性以进行此测试property-placeholder。例如
<context:property-placeholder
location="classpath:esb-project-config.properties,
classpath:some-other-props-if-needed.properties"
order="0"/>
2。 PropertyOverrideConfigurer
<context:property-override
location="classpath:esb-project-config.test.properties"/>
覆盖某些个人属性。一些例子here
3。系统变量
您可以使用前缀来控制特定于环境的属性,这可以通过使用系统变量来完成:
<context:property-placeholder
location="${ENV_SYSTEM:dev}/esb-project-config.properties"/>
在这种情况下,它将始终查看:
<context:property-placeholder
location="dev/esb-project-config.properties"/>
默认情况下,除非设置了 ENV_SYSTEM 系统变量。如果设置为qa,比如会自动往下看:
<context:property-placeholder
location="qa/esb-project-config.properties"/>
4。弹簧型材
另一种方法是使 bean 配置文件特定。例如:
<beans profile="dev">
<context:property-placeholder
location="esb-project-config.dev.properties"/>
</beans>
<beans profile="qa">
<context:property-placeholder
location="esb-project-config.qa.properties"/>
</beans>
将根据配置文件集加载适当的esb-project-config。例如这将加载esb-project-config.dev.properties:
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
ctx.getEnvironment().setActiveProfiles( "dev" );
ctx.load( "classpath:/org/boom/bang/config/xml/*-config.xml" );
ctx.refresh();
- 注意:“系统变量”和“系统配置文件”方法通常用于在不同的环境之间切换,而不仅仅是开发模式下的“开发 测试”,但仍然是有用的功能要注意。