spring中使用placeholder实现多环境适配

[size=large]背景[/size]

某个jar包里使用了PropertyPlaceholderConfigurer,配置文件也打在jar包里,有些场景下要求覆盖配置文件。

代码如下:

<bean id="_db_config" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:db-config.properties"/>
</bean>


[size=large]实现[/size]
PropertyPlaceholderConfigurer 提供了locations属性,可以添加多个配置文件,并且后面的文件中的相同变量会覆盖前面的。
我们可以通过定义多个配置文件的方式,来达到覆盖配置文件的目的。
例如,我们可以定义 dev.properies、product.properties文件,分别代表开发环境、生产环境的配置项,在生产环境提供product.properties覆盖dev.properties,达到适配不同环境的目的。


<bean id="_db_config" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:db-config.properties</value>
<value>file:/home/admin/db-config-product.properties</value>
</list>
</property>
<property name="ignoreResourceNotFound" value="true" />
</bean>


注意 ignoreResourceNotFound 属性,它的作用是 在找不到locations中指定的文件时,忽略异常继续流程,这样就不需要在每个环境都提供product配置了。


除了使用PropertyPlaceholderConfigurer的locations属性方式外,还可以通过自定义PlaceHolder实现的方式来扩展,以解决其它更复杂的问题。

ps:环境适配的方案很多,在工程规模较小的时候可以使用此方案。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值