SpringBoot——多环境开发的使用

举报
我是一棵卷心菜 发表于 2022/03/14 15:03:49 2022/03/14
【摘要】 学习笔记

一、前言

各位小伙伴们,前面已经讲解了SpringBoot——学会使用Test,检测自己写的代码,现在来介绍如何使用springboot在多环境下进行代码的开发~

二、简介

多环境开发,其实就是说我们的电脑上写的程序最终要放到别人的服务器上去运行。每个计算机环境不一样,这就是多环境。常见的多环境开发主要兼顾3种环境设置:

  • 开发环境——自己用的
  • 测试环境——自己公司用的
  • 生产环境——甲方用的

因为这是绝对不同的三台电脑,所以环境肯定有所不同,比如连接的数据库不一样,设置的访问端口不一样等等。
在这里插入图片描述

三、yaml单一文件版

现在介绍如何使用多环境的开发。

比如我们自己开发时,配置自己的端口如下:

server:
  port: 80

但是我想设计两组环境,分别用不同的端口号,我该怎么做呢?做法很简单,中间使用三个减号隔开

server:
  port: 80
---
server:
  port: 81

如何区分两种环境呢?起名字呗~

spring:
  config:
    activate:
      on-profile: dev
server:
  port: 80

---
spring:
  config:
    activate:
      on-profile: pro
server:
  port: 81

那用哪一个呢?设置默认启动哪个就可以了

spring:
  profiles:
    active: dev #默认环境是dev环境

多环境开发的使用就是这么简单,我们再多来一组环境也OK的

spring:
  profiles:
    active: dev #默认环境是dev环境

---
spring:
  config:
    activate:
      on-profile: dev
server:
  port: 80

---
spring:
  config:
    activate:
      on-profile: pro
server:
  port: 81

---
spring:
  config:
    activate:
      on-profile:  test
server:
  port: 82

总结

  • 多环境开发需要设置若干种常用环境,例如开发、生产、测试环境
  • yaml格式中设置多环境使用---区分环境设置边界
  • 每种环境的区别在于加载的配置属性不同
  • 启用某种环境时需要指定启动时使用该环境

四、yaml多文件版

将所有的配置都放在一个配置文件中,尤其是每一个配置应用场景都不一样,这显然不合理,解决办法就是将一个配置文件拆分成多个配置文件,通过这种方式,每个配置文件中写自己的配置,主配置文件中写清楚用哪一个配置文件就好了。

就以单文件版的配置举例,我们此时的主配置文件是:

spring:
  profiles:
    active: dev 

环境配置文件因为每一个都是配置自己的项,所以名字不用写里面了。问题是如何区分这是哪一组配置呢?办法是使用文件名区分。

application-pro.yaml

server:
	port: 80

application-dev.yaml

server:
	port: 81

application-test.yaml

server:
	port: 82

我只需要知道的是,文件的命名规则为:application-环境名.yml

相应的配置文件位置如下图所示:
在这里插入图片描述
在配置文件中,如果某些配置项所有环境都一样,可以将这些项写入到主配置文件中,只有那些有区别的项才写入到环境配置文件中

  • 主配置文件中设置公共配置(全局)
  • 环境分类配置文件中常用于设置冲突属性(局部)

总结

  • 可以使用独立配置文件定义环境属性

  • 独立配置文件便于线上系统维护更新并保障系统安全性

五、使用技巧

下面给大家说一下如何基于多环境开发做配置独立管理,务必掌握哦~

首先将所有的配置根据功能对配置文件中的信息进行拆分,并制作成独立的配置文件,命名规则如下,命名是一种规则

  • application-devDB.yml
  • application-devRedis.yml
  • application-devMVC.yml

然后使用include属性在激活指定环境的情况下,同时对多个环境进行加载使其生效,多个环境间使用逗号分隔

spring:
	profiles:
    	active: dev
        include: devDB,devRedis,devMVC

需要特别注意的是:当主环境dev与其他环境有相同属性时,主环境属性生效;其他环境中有相同属性时,最后加载的环境属性生效

但是上面的设置也有一个问题,比如我要切换dev环境为pro时,include也要修改。因为include属性只能使用一次。让人可喜的是SpringBoot从2.4版开始使用group属性替代include属性,降低了配置书写量。简单说就是我先写好,以后用哪个就使用哪个。

spring:
	profiles:
    	active: dev
        group:
        	"dev": devDB,devRedis,devMVC
      		"pro": proDB,proRedis,proMVC
      		"test": testDB,testRedis,testMVC

六、总结

好了,文章到这里就结束了,我们需要重点了解使用springboot进行多环境的开发,使开发做到分层次。如果觉得博客写的还不错,可以三连支持哦~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。