解决开发环境与部属环境差异性的一种实践

做spring web的同学可能都会遇到开发环境与部属环境不一致的情况,比如说数据库的用户名与密码,单点登录服务器的域名,等等,要是每回开发完成需要部署时都再去改一遍配置文件岂不是非常麻烦。

于是,我在我得一个项目中实践了一种能够在部署时无需修改配置文件的方法,他的关键就是使用spring的 <util:properties> :

<context:property-placeholder properties-ref="app"/>
<!-- 
         spring的<util:properties>有这样两点特性:
         1.默认情况下spring会用外部properties文件中的properties替换掉“local”的properties(也就是使用<prop>配置的properties)
         2.配置了“ignore-resource-not-found=true”就会忽略找不到的properties文件
         利用这两点特性,将开发级的环境写在外部properties文件中,并设置成“ignore-resource-not-found=true”,同时将生产级的环境写在<prop>中,这样,当部署后因为忽略了找不到的外部properties文件,所以自然就使用了<prop>中定义的properties;
         同时,在开发环境中,因为能够找到外部的properties文件,所以外部配置(开发级配置)就会覆盖掉local的配置(生产级配置)。
         通过这样的方法在部署时就不需修改任何配置了。 
-->    
<util:properties id="app" ignore-resource-not-found="true" location="file:C:/Dev/workspace/admin/user/src/main/resources/app-config.properties">
        <!-- 生产环境 -->
        <prop key="dataSource.url">jdbc:mysql://localhost:3306/admin_user</prop>
        <prop key="dataSource.username">dev</prop>
        <prop key="dataSource.password">pass</prop>

        <prop key="hibernate.hbm2ddl.auto">validate</prop>
        <prop key="hibernate.show_sql">false</prop>

        <prop key="cas.service">somedomain:8444/user</prop>
        <prop key="cas.server">somedomain:8444/cas</prop>
        <prop key="cas.key">CAS_KEY_ADMIN.USER</prop>
</util:properties>

spring的<util:properties>有这样两点特性:
         1.默认情况下spring会用外部properties文件中的properties替换掉“local”的properties(也就是使用<prop>配置的properties)
         2.配置了“ignore-resource-not-found=true”就会忽略找不到的properties文件
         利用这两点特性,将开发级的环境写在外部properties文件中并设置成“ignore-resource-not-found=true”同时将生产级的环境写在<prop>中,这样,当部署后因为忽略了找不到的外部properties文件,所以自然就使用了<prop>中定义的properties;
         同时,在开发环境中,因为能够找到外部的properties文件,所以外部配置(开发级配置)就会覆盖掉local的配置(生产级配置)。
         通过这样的方法在部署时就不需修改任何配置了。

转载于:https://my.oschina.net/since1986/blog/342067

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值