Spring profile 实现开发,测试,部署等不同环境中间的配置切换【原创】

在软件开发过程中会经历开发,测试,部署等多个阶段,每个阶段的配置不同,比如本地的开发环境所依赖的数据库是本地的MySQL,而测试环境的数据库依赖的是阿里云服务器中的云数据库,到了部署阶段可能依赖的数据库又是自己公司部署的物理机上的数据库,像这种只是一个数据库的差异不同,还能通过手动修改配置文件完成数据库的依赖,但是实际上的情况是现在的项目不再是单一的单体服务,而是复杂的分布式服务,一个完整的项目可能有几个或者更多个小的的服务组成,服务间通过通络通信,为了保证服务运行的稳定性以及功能的需要就会引入一大堆的组件和工具,比如涉及到缓存会引入redis,涉及到服务间的通信会引入消息队列,kafka或者mq,如果项目更复杂就会引入更多的工具和组件这个时候项目的配置就变得复杂起来了,如果在各个阶段都需要通过手动修改配置文件来完成项目的配置,这对于开发者来说是极其的不友好,开发者应该把更多的事情放在开发上面,而不是在不停的复制粘贴的修改配置文件,有没有一种简单办法呢?spring的profile功能进行配置参数的切换非常好的解决了这个问题

目前spring的profile提供了两种激活方式如下

1.通过设置spring.profiles.default和spring.profiles.active这两个属性来激活和使用对应的配置文件。default为默认,如果没有通过active来指定,那么就默认使用default定义的环境

激活需要的环境变量


在profile.activce没有选择需要激活的配置的情况下,spring会去加载默认的配置,如果就连默认的也没有,我以前遇到一次忘记写需要激活的配置,spring会把需要的配置从上到下进行加载,多数情况下会导致项目不能加载成功,这里建议大家进行本地开发的时候不要去使用这种修改配置文件的形式进行修改,遇到任何本地需要修改配置文件,但是仅仅只是本地开发需要修改配置文件,比如测试环境和部署环境的配置不需要改动的这种情况请通过idea提供的带参数启动来修改,避免污染配置文件导致后续步骤失败


关于带参数启动这里也有多种写法,这里不再讲解,有兴趣的可以自行百度

2.在程序中,也可以通过 @Profile("...") 对某些资源进行注解,这样只有当选择对应的环境时,才会产生对应的bean


对于以上的两种方式个人其实建议第一种,原因有以下几点

1.通过注解虽然没有修改配置文件,但是等同于修改了配置文件

2.通过环境来选择创建bean可能会导致在某一个环境下某一个bean出现NPE

3.通过修改注解形式不利于团队协作开发,一旦git提交忘记忽略注解所在的文件会给其他的同事带来不必要的影响

4.这种注解形式相对于注解形式来说分布比较松散,难以修改到位

目前许多的服务的部署都是通过Jenkins或者docker部署,默认环境变量只能默认一个,比如我的默认环境只是适合测试环境通过Jenkins部署,如果我的正式环境是docker部署的这个怎么办呢?难道还需要去修改配置文件的默认吗?其实不用,jdk启动过程中可以携带参数启动

比如运行jar包时指定端口:java -jar xxx.jar --server.port=8088

带参数启动如果只是一两个还好,可以直接写在脚本文件里面,如果参数太多了这种方式就太过于复杂,而且对于docker部署的服务来说部署情况完全不一样,那么带参数启动就适用了,这个时候还有一种就是通过在maven打包的过程中在节点中添加节点信息,maven会自动依据打包时候附带的节点启动信息去打出对应环境的jar,具体操作请参考https://blog.csdn.net/hjiacheng/article/details/57413933

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354

推荐阅读更多精彩内容