Spring Boot——外部加载配置文件和多环境切换

1,822 阅读2分钟

1、外部加载配置文件

外部加载配置文件的方式十分多:

  1. file:./config/ 项目路径下的config文件夹配置文件
  2. file:./ 项目路径下配置文件
  3. classpath:/config/ 资源路径下的config文件夹配置文件
  4. classpath:/ 资源路径下配置文件

按上面编号建立四个配置文件测试优先级:

在这里插入图片描述

四个配置文件分别配置端口号为8081,8082,8083,8084

启动主程序进行测试:

在这里插入图片描述

使用的端口号是8081,说明1号配置文件优先级最高

删掉一号配置文件,重新启动进行测试:

在这里插入图片描述

优先级其次是二号配置文件

删掉二号配置文件,重新启动进行测试:

在这里插入图片描述

优先级排第三的是三号配置文件

删掉三号配置文件,重新启动进行测试:

在这里插入图片描述

优先级最低的是四号配置文件

总结

配置文件的优先级从高到低如下所示(高优先级的配置会覆盖低优先级的配置):

  1. file:./config/ 项目路径下的config文件夹配置文件
  2. file:./ 项目路径下配置文件
  3. classpath:/config/ 资源路径下的config文件夹配置文件
  4. classpath:/ 资源路径下配置文件,默认使用

2、多环境切换

当配置文件是application.properties时

profiles是Spring对不同环境提供不同配置功能的支持,可以通过激活不同的环境版本,实现快速切换环境;

springboot默认只会读取application.properties里面配置的端口号,假如我们有多个环境,我们可以在application.properties中指定

例如我们有下面两套环境:

  • application-test.properties 代表测试环境配置

  • application-dev.properties 代表开发环境配置

但是Springboot并不会直接启动这些配置文件,它默认使用application.properties主配置文件,我们想要激活哪个配置文件就只需要在主配置文件中进行如下指定:

#指定开发环境
spring.profiles.active=dev
#指定测试环境
spring.profiles.active=test

当配置文件是application.yml时

在yaml文件中配置多环境并切换环境

#默认环境
server:
  port: 8080
#指定激活d开发环境
spring:
  profiles:
    active: dev

---
server:
  port: 8081
#给配置文件取名 开发环境
spring:
  profiles: dev

---
server:
  port: 8083
#测试环境
spring:
  profiles: test

注意:如果yml和properties同时都配置了端口,并且没有激活其他环境 , 默认会使用properties配置文件的!