一、多环境配置在工作中 , 对于开发环境、测试环境、生产环境的配置肯定都不相同 , 比如我们开发阶段会在自己的电脑上安装 mysql
, 连接自己电脑上的 mysql
即可,但是项目开发完毕后要上线就需要该配置,将环境的配置改为线上环境的 。
文章插图
来回的修改配置会很麻烦 , 而
SpringBoot
给开发者提供了多环境的快捷配置 , 需要切换环境时只需要改一个配置即可 。不同类型的配置文件多环境开发的配置都不相同,接下来对不同类型的配置文件进行说明1.1 yaml文件在
application.yml
中使用 ---
来分割不同的配置,内容如下#开发spring:profiles: dev #给开发环境起的名字server:port: 80---#生产spring:profiles: pro #给生产环境起的名字server:port: 81---#测试spring:profiles: test #给测试环境起的名字server:port: 82---
上面配置中 spring.profiles
是用来给不同的配置起名字的 。而如何告知 SpringBoot
使用哪段配置呢?可以使用如下配置来启用都一段配置#设置启用的环境spring:profiles: active: dev #表示使用的是开发环境的配置
综上所述,application.yml
配置文件内容如下#设置启用的环境spring:profiles: active: dev?---#开发spring:profiles: devserver:port: 80---#生产spring:profiles: proserver:port: 81---#测试spring:profiles: testserver:port: 82---
注意:在上面配置中给不同配置起名字的 spring.profiles
配置项已经过时 。最新用来起名字的配置项是#开发spring:config: activate: on-profile: dev
1.2 properties文件properties
类型的配置文件配置多环境需要定义不同的配置文件application-dev.properties
文件是开发环境的配置文件 。我们在该文件中配置端口号为80
server.port=80
application-test.properties
文件是测试环境的配置文件 。我们在该文件中配置端口号为81
server.port=81
application-pro.properties
文件是生产环境的配置文件 。我们在该文件中配置端口号为82
server.port=82
SpringBoot
只会默认加载名为 application.properties
的配置文件,所以需要在 application.properties
配置文件中设置启用哪个配置文件,配置如下:spring.profiles.active=pro
1.3 命令行启动参数设置使用 SpringBoot
开发的程序以后都是打成 jar
包,通过 java -jar xxx.jar
的方式启动服务的 。那么就存在一个问题 , 如何切换环境呢?因为配置文件打到的jar包中了 。我们知道
jar
包其实就是一个压缩包,可以解压缩,然后修改配置 , 最后再打成jar包就可以了 。这种方式显然有点麻烦,而 SpringBoot
提供了在运行 jar
时设置开启指定的环境的方式,如下java –jar xxx.jar –-spring.profiles.active=test
那么这种方式能不能临时修改端口号呢?也是可以的,可以通过如下方式java –jar xxx.jar –-server.port=88
当然也可以同时设置多个配置,比如即指定启用哪个环境配置,又临时指定端口,如下java –jar springboot.jar –-server.port=88 –-spring.profiles.active=test
大家进行测试后就会发现命令行设置的端口号优先级高(也就是使用的是命令行设置的端口号) , 配置的优先级其实 SpringBoot
官网已经进行了说明 , 参见 :https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config
进入上面网站后会看到如下页面文章插图
如果使用了多种方式配合同一个配置项 , 优先级高的生效 。
二、配置文件分类有这样的场景,我们开发完毕后需要测试人员进行测试,由于测试环境和开发环境的很多配置都不相同,所以测试人员在运行我们的工程时需要临时修改很多配置,如下
java –jar springboot.jar –-spring.profiles.active=test --server.port=85 --server.servlet.context-path=/heima --server.tomcat.connection-timeout=-1 …… …… …… …… ……
针对这种情况 ,
推荐阅读
- 【Java8新特性】- Stream流
- 🔥支持 Java 19 的轻量级应用开发框架,Solon v1.10.4 发布
- Java核心技术阅读笔记 java中的自动拆装箱与缓存
- 驱动开发:内核取ntoskrnl模块基地址
- 【Java】 DirectByteBuffer堆外内存回收
- VScode开发STM32/GD32单片机-MakeFile工程JlinkRTT配置
- 一个C#开发者学习SpringCloud搭建微服务的心路历程
- Java19虚拟线程都来了,我正在写的线程代码会被淘汰掉吗?
- VScode开发STM32/GD32单片机-环境搭建
- Playwright+Java 微软出品自动化神器Playwright系列(四)之浏览器操作