前言

我们日常开发中,一般都会配置多个环境,比如开发环境(dev)、生产环境(prod)、测试环境(test),不然因为众多的配置,众多的参数,什么 Redis、MySQL、注册中心的配置,都在一个环境的配置文件下,就会很头疼,而 Spring Boot 的多环境配置就很好的解决了这一个问题,把不同环境不同参数配置在不同的配置文件里,哪里需要就配置加载哪个配置文件就可以了。

各环境区别

  • 开发环境

    顾名思义,开发同学开发时使用的环境,每位开发同学在自己的 dev 分支上干活,提测前或者开发到一定程度,各位同学会合并代码,进行联调。

  • 测试环境

    也就是我们测试同学干活的环境,一般是克隆一份生产环境的配置,一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。

  • 生产环境

    即线上环境,用户使用的环境。

演示环境

  • Spring Boot 2.3.0.RELEASE
  • IntelliJ IDEA 2020.3.2

正文

首先我们需要创建一个 Spring Boot 工程

方式一

同一个配置文件配置多个环境

打开 application.yml 配置文件,添加如下配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 主配置
spring:
profiles:
# 选择环境
active: dev
---
# 开发环境
server:
# 端口
port: 8080
spring:
# 配置开发环境的名称
profiles: dev

---
# 测试环境
server:
# 端口
port: 8081
spring:
# 配置测试环境的名称
profiles: test

这里我选择了 dev(开发)环境,然后我把开发环境的端口设为 8080,测试环境 8081,接着我们直接启动项目来看下效果

console

通过控制台日志输出可以看出,运行的环境正是我们开发环境

方式二

创建多个配置文件

首先另外再创建两个配置文件,分别是 application-dev.yml 表示开发环境的配置,application-test.yml 表示测试环境的配置。

application-dev.yml 配置如下

1
2
3
4
# 开发环境
server:
# 端口
port: 8080

application-test.yml 配置如下

1
2
3
4
# 测试环境
server:
# 端口
port: 8081

接着修改主配置内容(application.yml

1
2
3
4
5
# 主配置
spring:
profiles:
# 选择环境
active: test

选择了测试环境,启动项目看效果

images

可以看到已是测试环境,说明这种方式也可以配置成功!

结语

通过修改 application.yml 文件中的 spring.profiles.active 参数决定加载对应环境的配置!