文档章节

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

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的经验,一定对他的快速改版私毫不陌生,可能早上醒来时发现「赞」的图案突然从实心变从空心,或是开始多了一些缤纷酷炫的功能(像是直播、限时动态..等...

好雨云帮
05/03
0
0
SOA:服务需要加以区别保持差异性吗?

不久前我看过一部电影<<幸福终点站(The Terminal)>>, Tom Hanks所饰演的主角被迫生活在一个机场,因为他是一个无国籍的人,他的国籍不被承认是因为就在他去美国的路上他的祖国解体了,他的国家不...

晨曦之光
2012/03/09
0
0
基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET平台开发指南 - 应用部署

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

agilelab
2010/09/18
0
0
【说云精选】 容器化与 Docker 专刊 第一期

Docker 技术经历了数年的发展,已经逐渐成了气候,完善的工具链让Docker 不再是那个拄着拐杖走路的服务,如今的 Docker 已经能够做好应用的开发部署工作。今天我们开始更新「容器化与 Docker...

西秦说云
01/02
0
0
自动化的高效团队开发环境

来源:陈天的博客 1. 引子 这两天无意翻到几个月前的Evernote笔记,看到了当时对团队开发环境的一些想法。可惜后来种种,这一想法未能得到实践,只能将其完善后公诸于众,立此存照,日后有空...

2013/04/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

spring 容器实现对bean的管理(注解方式解析,源码阅读)

因为最近在研究学习spring boot,所以这里想详细学习回顾了一下spring 容器对bean的一些管理方式和部分源码学习。 首先初始类AnnotationConfigApplicationContext,简单源码查看,支持两个参...

小海bug
11分钟前
0
0
数据结构:二分查找 java

二分查找的前提是有序存储,利用顺序存储和元素排序 /** * 二分查找,查找成功,返回下标记 * @param values * @param begin * @param end * @param key * @param <T> * @ret...

京一
29分钟前
0
0
@SpringBootApplication 注解

@SpringBootApplication注解是一个组合注解,包含以下注解 @Target(ElementType.TYPE) 注解的作用目标 @Retention(RetentionPolicy.RUNTIME) Reteniton的作用是定义被它所注解的注解保留多久,...

java.刘
42分钟前
0
0
sentinel自定义DataSource实战

序 本文主要研究一下如何自定义sentinel的DataSource,这里以jdbc为例。 maven <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sen......

go4it
57分钟前
1
0
xgboost/gbdt在调参时为什么树的深度很少就能达到很高的精度?

问题: 用xgboost/gbdt在在调参的时候把树的最大深度调成6就有很高的精度了。但是用DecisionTree/RandomForest的时候需要把树的深度调到15或更高。用RandomForest所需要的树的深度和Decisio...

tantexian
59分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部