SpringBoot之多环境切换与配置文件位置

profile是Spring对不同环境提供不同配置功能的支持,可以通过激活不同的环境,使用不同的配置。

我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml , 用来指定多个环境版本;

例如:

application-test.properties 代表测试环境

application-dev.properties 代表开发环境

application-pro.properties 代表生产环境

但是Springboot不会去加载这些配置文件,默认是加载application.properties文件。如果将application.properties文件注释掉, Sprinboot仍然会读取其他的application-环境名.properties中的配置,且properties文件的优先级高于yml文件。

因此,我们需要一个配置来激活不同的环境

properties版本:

#激活开发环境
spring.profiles.active=dev

yaml版本:

server:
  port: 8081
#选择要激活那个环境块
spring:
  profiles:
    active: pro

---
server:
  port: 8083
spring:
  profiles: dev  #配置环境的名称 


---

server:
  port: 8084
spring:
  profiles: pro  #配置环境的名称

yml的配置方式比properties要方便一些。

多个环境下,properties需要写多个配置文件,而yml可以在一个配置文件中写多种环境

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

加载配置文件的位置

Springboot的官方文档有提供四种位置
https://docs.spring.io/spring-boot/docs/2.2.13.RELEASE/reference/html/spring-boot-features.html#boot-features-external-config

1、file:./config/ ——项目路径下的config文件夹配置文件

2、file:./ ——项目路径下配置文件

3、classpath:/config/ ——resource下的config文件夹配置文件

4、classpath:/ ——resource下配置文件

springboot默认加载的顺序如下:

优先级1:项目路径下的config文件夹配置文件
优先级2:项目路径下配置文件
优先级3:resource下的config文件夹配置文件
优先级4:resource下配置文件

很迷,Springboot默认生成的是优先级最低的配置文件。高优先级的配置会覆盖低优先级的。
当然,我们也有办法改变默认的配置文件位置
当我们使用spring.config.location自定义配置文件位置时,我们的配置将替换默认位置。例如,如果spring.config.location配置为classpath:/custom-config/,file:./custom-config/,则搜索顺序如下:

file:./custom-config/

classpath:custom-config/

或者,当使用spring.config.additional-location来配置(添加)位置时,除默认位置外,还会使用我们配置的位置且在默认位置之前搜索它们。例如,如果配置了classpath:/custom-config/,file:./custom-config/,则搜索顺序如下:

file:./custom-config/

classpath:custom-config/

file:./config/

file:./

classpath:/config/

classpath:/

除此之外,项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;这种情况,一般是后期运维做的多,相同配置,外部指定的配置文件优先级最高

java -jar spring-boot-config.jar --spring.config.location=xxx/application.properties

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值