SpringBoot3多环境配置
SpringBoot3多环境配置
前言
这篇文章是我在学习SpringBoot3
时对多环境配置概念学习的记录,以便日后遗忘查阅;
目录
一、如何理解多环境配置
1.什么是软件运行环境
软件开发中经常提到环境这个概念,与日常生活中的环境概念一样。环境影响人的居住体验。影响软件运行的也叫做环境,例如应用中访问数据库的ip,用户名和密码,Redis 的端口,配置文件的路径,windows, linux 系统,tomcat服务器等等。围绕着程序周围的都是环境。环境影响软件的运行。
2.为什么要设立多个软件运行环境
我们可以给编写好的代码提供不同的运行环境,例如开发环境、生产环境、测试环境等;那么我们为什么又要这样做呢?
我们从容易理解的数据库环境配置来进行举例。
当我们在开发代码时,我们要连接一个数据库,导入相应表结构,至于其中提供用于开发进行逻辑判断的数据,不一定是真实可靠的,只要数据逻辑不混乱,开发就可以进行。
那么,当我们阶段性开发好的代码需要测试时,测试人员一般会用各种可能触发bug的手段去输入数据,这很显然,数据更不会是生产环境所需的真实数据。
而当我们经历了开发、测试等一系列阶段后,准备上线我们的项目了,我们就需要一个新的数据库环境,确保其中维护的数据真实可靠。
那么在这三个阶段中,我们可以设立三个数据库环境,分别写到不同的配置文件当中,通过主配置文件的属性,来进行数据库环境的切换。在这种场景下使用多环境能够方便解决这个问题。
二、如何在SpringBoot中进行运行环境切换
1.SpringBoot关于环境切换约定
SpringBoot规定环境文件的名称:application-{profile}.properties(yml)
其中profile为自定义的环境名称,推荐使用dev表示开发,test表示测试,prod表示生产,feature表示特性。总是profile名称是自定义的。SpringBoot会加载application以及application-{profile}两类文件,不是只单独加载application-{profile}。
2.SpringBoot多环境切换实操
1.先在resources目录下创建主配置文件,以及你需要配置的相应环境配置文件。这里我用开发、生产、测试三个环境进行演示。
application.yml
server:
# tomcat服务启动时端口号
port: 21208
spring:
profiles:
# 选择要激活的配置文件,和对应配置文件中on-profile属性值对应。
active: dev
application-dev.yml
myapp:
memo: 这是开发环境的配置文件
spring:
config:
activate:
on-profile: dev
application-prod.yml
myapp:
memo: 这是生产环境的配置文件
spring:
config:
activate:
on-profile: prod
application-test.yml
myapp:
memo: 这是测试环境的配置文件
spring:
config:
activate:
on-profile: test
2.默认不激活环境配置文件,程序只加载application.yml配置文件。控制台打印显示如下。
Application : No active profile set, falling back to 1 default profile: "default"
TomcatWebServer : Tomcat initialized with port(s): 21208 (http)
3.切换激活配置文件测试。
Controller
@Slf4j
@RestController
@RequestMapping({"Test"})
public class TestController {
@Value("${myapp.memo}")
private String memo;
@GetMapping("print")
public void print(){
log.info(memo);
}
}
主配置文件配置active: dev
控制台打印如下:
Application : The following 1 profile is active: "dev"
TomcatWebServer : Tomcat initialized with port(s): 21208 (http)
TestController : 这是开发环境的配置文件
主配置文件配置active: prod
控制台打印如下:
Application : The following 1 profile is active: "prod"
TomcatWebServer : Tomcat initialized with port(s): 21208 (http)
TestController : 这是生产环境的配置文件
主配置文件配置active: test
控制台打印如下:
Application : The following 1 profile is active: "test"
TomcatWebServer : Tomcat initialized with port(s): 21208 (http)
TestController : 这是测试环境的配置文件