当开发真实的项目时,可能会遇到不同的环境,不同的环境所需要的配置内容也会不尽相同,所以,掌握多环境配置还是非常有必要的。本文为大家准备了SpringBoot多环境配置教程,需要的可以参考下
一、为什么要配置多环境
当我们工作开发真实的项目时,可能会遇到不同的环境,如:开发环境、生产环境、测试环境等,不同的环境所需要的配置内容也会不尽相同,如果我们每次切换环境时再去配置对应的环境配置,肯定会降低我们的开发效率,所以,掌握多环境配置还是非常有必要的。
二、如何进行多环境配置呢
我们还是以配置端口号为例,来演示如何进行多环境配置问题。
1、针对 yaml 配置文件
# 设置启用的环境
spring:
profiles:
active: dev
---
# 开发环境
spring:
profiles: dev # 为开发环境命名
server:
port: 80
---
# 生产环境
spring:
profiles: pro # 为生产环境命名
server:
port: 81
---
# 测试环境
spring:
profiles: test # 为测试环境命名
server:
port: 82
- 不同的环境之间需要用 3 个 “ - ” 号作为分割。
- 在需要使用哪个环境时,就将 active 的属性值声明为那个环境的名字。
- 初始 port 端口号,还可以在配置其他信息,在此我就不再一一赘述了。
2、针对 properties 配置文件
使用 yaml 配置文件,一个文件就能够完成多环境的配置工作,但是如果使用 properties 配置文件的话,需要使用多文件才能够完成。
主配置文件 application.properties
# 设置启用的环境
spring.profiles.active=dev
开发环境 application-dev.properties
server.port=80
生产环境 application-pro.properties
server.port=81
测试环境 application-test.properties
server.port=82
- 有多少个环境,就需要定义多少个配置文件,在自己的配置文件中配置环境内容。
- 在主配置文件中声明使用哪个环境。
三、命令行启动参数
通常情况下,我们都会将做好的项目打包成 jar 包,那么,如果我们在命令行中执行 jar 包的时候能够完成切换环境的功能吗?还是说,我们必须在到 IDEA 开发工具中去配置文件中手动改变当前启用的环境呢?答案当然是否定的,我们可以通过命令行参数还完成环境的切换。
第一步:打包项目
打包工作在 【SpringBoot】快速入门一文中有详细讲解,感兴趣的小伙伴可以移步查看。
选中 package 后运行开始打包。
完成到找到相应的文件夹,执行 cmd 命令。
第二步:输入命令行
输入命令:java -jar demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=test
通过分析端口号能够发现,已经切换到了测试环境中。
命令最后多了 “ --spring.profiles.active=test ” 部分内容,仔细观察是否发现,这和我们在配置文件中写的配置启用环境内容是不是非常像呢?没错,就是按照它写的。
这就告诉我们,如果我们想使用命令行方式切换环境,可以使用上述方式进行。
补充内容
除了使用上述方式可以完成切换环境的操作外,如果我们还想使用一个我们从未定义过的端口号该怎么做呢?
输入命令:java -jar demo-0.0.1-SNAPSHOT.jar --server.port=90
直接使用 “ server.port=90 ” 指定临时端口号,同样能够生效。
很多小伙伴不明白为什么要使用 “ server.port" 的方式指定,这是因为我们在配置文件中就是使用该方式指定端口号的,只是搬到了命令行参数上罢了。
当同时指定 “ server.port = 90 ” 和 “ spring.profiles.active=test ” 时,哪一个会起作用呢?我们不妨测试一下。
根据端口号可以得出 “ server.port = 90 ” 这个参数起作用了,说明它的优先级更高。
对于优先级的内容,可以参考官网。
当配置多个时,优先级高的生效。
到此这篇关于SpringBoot多环境配置教程详解的文章就介绍到这了,更多相关SpringBoot多环境配置内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:SpringBoot多环境配置教程详解
基础教程推荐
- Java并发编程进阶之线程控制篇 2023-03-07
- ConditionalOnProperty配置swagger不生效问题及解决 2023-01-02
- Java数据结构之对象比较详解 2023-03-07
- JDK数组阻塞队列源码深入分析总结 2023-04-18
- java基础知识之FileInputStream流的使用 2023-08-11
- java实现多人聊天系统 2023-05-19
- springboot自定义starter方法及注解实例 2023-03-31
- Java实现线程插队的示例代码 2022-09-03
- Java实现查找文件和替换文件内容 2023-04-06
- Java文件管理操作的知识点整理 2023-05-19