【SpringBoot】多环境配置

👉 博客主页:准Java全栈开发工程师
👉 00年出生,即将进入职场闯荡,目标赚钱,可能会有人觉得我格局小、觉得俗,但不得不承认这个世界已经不再是以一条线来分割的平面,而是围绕财富旋转的球面,成为有钱人不是为了去掌控球体的转向,而是当有人恶意掌控时,努力保护好家人和自己。

一、为什么要配置多环境?

当我们工作开发真实的项目时,可能会遇到不同的环境,如:开发环境、生产环境、测试环境等,不同的环境所需要的配置内容也会不尽相同,如果我们每次切换环境时再去配置对应的环境配置,肯定会降低我们的开发效率,所以,掌握多环境配置还是非常有必要的。

二、如何进行多环境配置呢?

  • 我们还是以配置端口号为例,来演示如何进行多环境配置问题。

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 ” 这个参数起作用了,说明它的优先级更高。
  • 对于优先级的内容,可以参考官网。

在这里插入图片描述

  • 当配置多个时,优先级高的生效。

👉 以上就是文章的全部内容啦,诸佬如果有任何建议都可以提哦。
👉 创作不易,如果觉得对您有帮助的话,欢迎关注✨点赞👍收藏📂哦。

posted @ 2022-06-23 17:53  准Java全栈开发工程师  阅读(126)  评论(0编辑  收藏  举报