第3章 Spring Boot 的系统配置
3.1 Spring Boot 系统配置文件
3.2 Spring Boot 自定义配置项
3.3 Spring Boot 其他配置
3.4 Spring Boot 日志配置
3.5 实战:Spring Boot 实现系统多环境配置
3.5 实战:Spring Boot 实现系统多环境配置
在实际项目开发的过程中,需要面对不同的运行环境,比如开发环境、测试环境、生产环境等,每个运行环境的数据库、Redis服务器等配置都不相同,每次发布测试、更新生产都需要手动修改相关系统配置。这种方式特别麻烦,费时费力,而且出错的概率极大。庆幸的是,Spring Boot 为我们提供了更加简单方便的配置方案来解决多环境的配置问题,下面就来演示 Spring Boot 如何实现系统多环境配置。
Spring Boot 实现系统多环境配置的步骤:
- 多环境的配置:在项目的 resources 目录下分别创建开发环境(application-dev.properties)、测试环境(application-test.properties)、生产环境(application-prod.properties)配置文件,然后修改不同环境对应的配置信息。
- 多环境的切换:在主配置文件(application.properties)中通过
spring.profiles.active
配置项来激活相应的运行环境。注意:如果没有指定任何 profile 的配置文件,Spring Boot 会默认启动 `application-default.properties`(默认环境)。
3.5.1 多环境的配置
(1)创建多环境配置文件
创建多环境配置文件时,需要遵循 Spring Boot 允许的命名约定来命名,格式为 application-{profile}.properties,其中{profile}为对应的环境标识。在项目 resources 目录下分别创建application-dev.properties、application-test.properties 和 application-prod.properties 三个配置文件,对应开发环境、测试环境和生产环境。
Spring Boot 各系统环境配置文件,如图所示。
如图所示,根据应用系统中常见的三个运行环境拆分成了多个不同的配置文件,分别独立配置上面各运行环境的配置项。具体如下所示:
- application.properties:项目主配置文件,包含项目所需的所有公共配置。
- application-dev.properties:开发环境配置文件,包含项目所需的单独配置。
- application-test.properties:测试环境配置文件,包含项目所需的单独配置。
- application-prod.properties:生产环境配置文件,包含项目所需的单独配置。
(2)修改配置文件
通常情况下,开发环境、测试环境和生产环境使用的数据库是不一样的,所以接下来以不同环境配置不同数据库为例来演示多环境的配置。
示例:
项目主配置文件:application.properties
# 服务器端口配置 server.port=8081 # 系统运行环境 # spring.profiles.active=dev
开发环境配置文件:application-dev.properties
# 服务器端口配置 #server.port=8091 # 指定数据库驱动 spring.datasource.driver-class-name=com.mysql.jdbc,Driver # 数据库jdbc连接url地址 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/myapp_dev # 数据库账号 spring.datasource.username=root spring.datasource.password=root
测试环境配置文件:application-test.properties
# 服务器端口配置 #server.port=8092 # 指定数据库驱动 spring.datasource.driver-class-name=com.mysql.jdbc,Driver # 数据库jdbc连接url地址 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/myapp_test # 数据库账号 spring.datasource.username=root spring.datasource.password=root
生产环境配置文件:application-prod.properties
# 服务器端口配置 #server.port=8093 # 指定数据库驱动 spring.datasource.driver-class-name=com.mysql.jdbc,Driver # 数据库jdbc连接url地址 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/myapp_prod # 数据库账号 spring.datasource.username=root spring.datasource.password=root
默认环境配置文件:application-default.properties
# 服务器端口配置 server.port=8090
3.5.2 多环境的切换
配置了多环境之后,在实际测试、运行过程中,如何切换系统运行环境呢?
非常简单,通过修改 application.properties 配置文件中的
spring.profiles.active
配置项来激活相应的运行环境。注意:如果没有指定任何 profile 的配置文件,Spring Boot 会默认启动
application-default.properties
(默认环境)。
指定项目的启动环境有以下3种方式:
(1)方式一:配置文件
指定项目启动环境
Spring Boot 支持通过 spring.profiles.active 配置项目启动环境,在 application.properties 配置文件中增加如下配置项指定对应的环境:
spring.profiles.active=dev
在上面的示例中,通过在 application.properties 配置文件中设置 spring.profiles.active 的配置项来配置系统的运行环境。这里配置的是 dev 开发环境。
(2)方式二:IDEA 编译器
指定项目启动环境
一般在 IDEA 启动时,直接在 IDEA 的 Run/debug Configurations 页面配置项目启动环境,如图所示:
如图所示,项目调试运行时,IDEA 编译器可以通过
VM options
、Program arguments
、Active profiles
三个参数设置启动方式。备注:上面三个参数任选其一即可。
拓展:
上面三个参数设置启动方式 对应的 java启动命令,如下图所示:
(3)方式三:命令行启动
指定项目启动环境
在命令行通过
java -jar
命令启动项目时,需要如下指定启动环境:java -jar xxx.jar --spring.profiles.active=dev
如上所示,程序打包之后,可以在命令行使用 java -jar 的方式启动,并设置启动参数spring.profiles.active=dev,以开发环境为默认配置。
启动项目时,在系统启动日志中可以看到加载的是哪个环境的配置文件,如图所示。
在上面的启动日志中可以看到系统目前启动的是dev开发环境。如果实现相关的数据库测试方法,可以验证相应的数据库操作是否生效。
来源:《Spring Boot 从入门到实战》学习笔记