1、外部加载配置文件
外部加载配置文件的方式十分多:
- file:./config/ 项目路径下的config文件夹配置文件
- file:./ 项目路径下配置文件
- classpath:/config/ 资源路径下的config文件夹配置文件
- classpath:/ 资源路径下配置文件
按上面编号建立四个配置文件测试优先级:
四个配置文件分别配置端口号为8081,8082,8083,8084
启动主程序进行测试:
使用的端口号是8081,说明1号配置文件优先级最高
删掉一号配置文件,重新启动进行测试:
优先级其次是二号配置文件
删掉二号配置文件,重新启动进行测试:
优先级排第三的是三号配置文件
删掉三号配置文件,重新启动进行测试:
优先级最低的是四号配置文件
总结
配置文件的优先级从高到低如下所示(高优先级的配置会覆盖低优先级的配置):
- file:./config/ 项目路径下的config文件夹配置文件
- file:./ 项目路径下配置文件
- classpath:/config/ 资源路径下的config文件夹配置文件
- 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配置文件的!