在我们开发Web应用中会有开发环境和生产环境,比如我们的配置文件中数据库相关的配置,在开发环境可能就是一个开发环境的数据库,但是程序要上线需要切换到生产环境的数据库。
大部分做法可能是在上线前将我们的配置文件手动改成生产环境相应的配置。这样做因为人为失误可能会影响生产环境的配置。
Spring Boot 提供了多环境自动切换的功能,可以让我们更好的切换不同的环境配置文件上去。
下面我们以yml的配置文件讲解多环境配置的方法。
假如我们现有开发环境和生产环境,
开发环境端口是8080,数据库连接地址是localhost,用户名test 密码 test
生产环境的端口是9090,数据库连接地址是124.125.116.28 用户名是prd,密码:123456
- 步骤1:在POM文件引入mysql依赖包
<!-- Mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
- 步骤2:创建 开发环境的配置文件application-dev.yml,生产环境的配置文件application-prd.yml,然后将相应的配置内容填写到对应的配置文件中
application-dev.yml
#开发环境
server:
port: 8080
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test
username: test
password: test
application-prd.yml
#生产环境
server:
port: 9090
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://124.125.116.28:3306/prd
username: prd
password: 123456
- 步骤3:修改application.yml文件
如果我们需要切换至开发环境则 将spring.profiles.active设置为dev
server:
servlet:
context-path: /
tomcat:
uri-encoding: UTF-8
spring:
http:
encoding:
charset: UTF-8
profiles:
active: dev
person:
name: username
password: 123456
address: 127.0.0.1
如果我们需要切换至生产环境则将spring.profiles.active设置为prd
server:
servlet:
context-path: /
tomcat:
uri-encoding: UTF-8
spring:
http:
encoding:
charset: UTF-8
profiles:
active: prd
person:
name: username
password: 123456
address: 127.0.0.1
- 步骤4:运行程序SpringBootLearnApplication
我们可以看到控制台,当切换到开发环境时输出的端口为8080
当切换到生产环境时输出的端口为9090
综上说明我们的多环境配置是成功的。
介绍spring.profiles.include
如果在Spring Boot应用中分为开发环境,生产环境;每个环境均有db,redis的配置,那么spring.profiles.include就能发挥它的作用了,方面我们不同环境的配置一键切换。
例如:
application.yml 内容如下
spring.profiles.active: dev #dev、prd两种环境配置
新建 application-dev.yml(开发环境入口配置)、application-devDb.yml(开发环境数据库配置)
application-devReids.yml(开发环境Redis配置)
application-prd.yml (生产环境入口配置)、application-prdDb.yml (生产环境数据库配置)
application-prdReids.yml(生产环境Redis配置)
在application-dev.yml中设置以下内容
spring.profiles.include: devDb,devRedis
在application-prd.yml中设置以下内容
spring.profiles.include: prdDb,prdRedis
这样在切换到dev环境时同时激活了 application-dev.yml、application-devDb.yml、application-devReids.yml
切换到prd环境时同时激活了 application-prd.yml、application-prdDb.yml、application-prdReids.yml