文档章节

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

since1986
 since1986
发布于 2014/11/07 16:50
字数 642
阅读 143
收藏 6

做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的配置(生产级配置)。
         通过这样的方法在部署时就不需修改任何配置了。

© 著作权归作者所有

共有 人打赏支持
since1986
粉丝 7
博文 60
码字总数 10510
作品 1
石家庄
程序员
私信 提问
自动上线测试已经不潮了,你有跟上DevOps的潮流吗?

相信大家一定都(没)有使用过Facebook的经验,一定对他的快速改版私毫不陌生,可能早上醒来时发现「赞」的图案突然从实心变从空心,或是开始多了一些缤纷酷炫的功能(像是直播、限时动态..等...

好雨云帮
2018/05/03
0
0
基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET平台开发指南 - 应用部署

集成与测试 AgileEAS.NET采用的是平台加插件的开发方式,也就是说,开发好插件需要集到AgileEAS.NET平台并进行集成测试,这将涉及到插件的安装、管理与组织,因为要涉及到的AgileEAS.NET平台...

agilelab
2010/09/18
0
0
【函数计算月报】2018年9月刊

重点新闻 2018 杭州云栖大会 Serverless 专场 9.22日,在杭州云栖大会上,阿里云函数计算负责人不瞋以 《创新科技的最佳实践 – 基于函数计算的智能应用》为主题,向用户介绍了阿里云的 serv...

cici是夏莞
2018/10/26
0
0
这几天找工作,贴下自己简历,请各位大牛们指点下

自我评价: l 精通PHP编程语言,熟悉LAMP构架; l 熟悉 windows 2003, Linux, FreeBSD 服务器系统的维护部属。 l 熟悉大型CMS系统,商城系统二次开发(phpCMS,drupal,ecshop, ecmall, ...

吴涛
2010/12/20
4.3K
50
微信公共平台开发者url/token 认证(springmvc3.2.4)

bae升级到3,所以转战到sae。在此,记录一下遇到的问题。 sae java环境, 1.jdk1.6,服务器jetty7.x 2.自己上传的项目里面的jar包不能跟sae上的冲突。 因为自己的项目是maven构建,用到了dom...

DemoDoc
2014/05/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

iOS个人中心渐变动画、微信对话框、标签选择器、自定义导航栏、短信验证输入框等源码

iOS精选源码 简单的个人中心页面-自定义导航栏并予以渐变动画 程序员取悦女票的正确姿势---Tip1(iOS美容篇) iOS 前台重启应用和清除角标的问题 微信原生提醒对话框3.0 JHLikeButton - 有趣...

Android爱开源
6分钟前
0
0
Yii2使用驼峰命名的形式访问控制器

yii2在使用的时候,访问控制器的时候,如果控制器的名称是驼峰命名法,那访问的url中要改成横线的形式。例如: public function actionRoomUpdate(){//}//访问的时候就要www.test.co...

dragon_tech
9分钟前
0
0
Navicat使用教程:使用Navicat Query Analyzer优化查询性能(第2部分)

下载Navicat Monitor最新版本 Navicat Monitor 是一套安全、简单而且无代理的远程服务器监控工具。它具有强大的功能使你的监控发挥最大效用。受监控的服务器包括 MySQL、MariaDB 和 Percona ...

电池盒
15分钟前
0
0
Python3 读写utf-8文本文件

with open('testRead.txt', 'r', encoding='utf-8') as f: for each_line in f: Passwith open('testWrite.txt', 'w', encoding='utf-8') as f: f.write('写入的内容'......

编程老陆
18分钟前
0
0
Linux syslog相关函数详解

介绍 syslog是Unix系统的日志系统。可以将日志记录在本地系统中。 一个完整的syslong日志包含如下信息:程序模块 | 严重性 | 时间 | 主机名 | 进程名 | 进程ID | 正文。 syslong相关函数 1....

RongJinhui0
23分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部