首页 > 代码库 > 解决开发环境与部属环境差异性的一种实践
解决开发环境与部属环境差异性的一种实践
做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的配置(生产级配置)。
通过这样的方法在部署时就不需修改任何配置了。
解决开发环境与部属环境差异性的一种实践
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。