SpringBoot·多配置切换

412 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第4天,点击查看活动详情

SpringBoot·多配置切换

开发项目时,一般会将软件所运行的环境分为三个环境:开发环境、测试环境以及生产环境,而三种环境的使用者一般对应于软件行业中的开发人员、测试人员以及客户。因此如何快速的切换不同配置文件对于一个开发者来说是一个不可忽视的问题。

1. 编写单个配置文件并指定spring.profiles.active的值切换配置

此方式仅适用于YAML格式的配置文件,编写的重点如下:

  1. 使用spring.profiles.active指定需要启动的配置。

  2. 使用spring.config.activate.on-profile指定配置名,且多个配置之间使用---进行分割。asbcxxdsewfgijkklmnopqrrsaaaaZ

  3. 将相同的配置参数放在最顶层或最底层,以便其他配置也可进行加载。

spring:
  profiles:
    active: "prod"
---
spring:
  config:
    activate:
      on-profile: "prod"
server:
  port: 8001
---
spring:
  config:
    activate:
      on-profile: "dev"
server:
  port: 8002
---
spring:
  config:
    activate:
      on-profile: "test"
server:
  port: 8003

通过在配置文件指定spring.profiles.active的值,我们可以观察SpringBoot项目启动端口的变化情况。

pic-1.png

2. 编写多个配置文件并通过IDEA设置启动的配置文件名

注意,配置文件必须按照application-[环境名]的格式编写,如application-dev,application-test。

  • application.properties
server.port=8001
  • application-dev.properties
server.port=8002
  • application-test.properties
server.port=8003

编写完以上三个配置文件之后,项目的配置文件共有三个。

pic-2.png

打开项目运行配置编辑窗口,我们可以通过添加 spring.profiles.active=test此参数来指定项目以哪个配置文件进行运行,。注意,需要通过--来连接参数。

pic-3.png

通过在项目运行配置编辑窗口指定spring.profiles.active的值,我们可以观察SpringBoot项目启动端口的变化情况。

pic-4.png

3. 对已打包的项目切换配置文件

对已打包的SpringBoot项目切换配置文件主要有以下两种情况:

  1. 通过java -jar [项目名] --spring.profiles.active=[配置名]来指定项目运行时所使用的内部配置文件(即存在于打包的项目中的配置文件)。

  2. 通过java -jar [项目名] --spring.config.location=[配置文件路径]来指定项目运行时所使用的外部配置文件。

pic-5.png

pic-6.png

4. 了解配置文件的优先级

SpringBoot默认会从四个位置寻找配置文件,分别如下:

  • 项目根目录下中的config文件夹的配置文件
  • 项目根目录下的配置文件
  • 类路径中的config文件夹的配置文件
  • 类路径中的配置文件

需要注意的一点是,以上所述四个配置文件的优先级为高到低,若配置文件中有相同的参数,则默认取优先级高的配置文件中的参数值。


作者:通雄

版权声明:本文为原创文章,未经本人允许不得转载。