Spring Boot配置文件顺序学习

本文详细介绍了SpringBoot配置文件的加载顺序,包括不同目录下的properties和yml文件的优先级,以及如何根据spring.profiles.active激活特定环境的配置。强调了混用配置格式可能带来的问题,并建议在生产环境中使用外部配置文件并激活profile,以确保正确读取配置。
摘要由CSDN通过智能技术生成

Spring Boot配置文件顺序学习

1、SpringBoot的总体读取顺序优先级包外大于包内,properties大于yml
2、 SpringBoot的总体读取顺序如下所示:

  • config/application.properties(项目同级目录中config目录下)
  • config/application.yml
  • application.properties(项目同级目录下)
  • application.yml
  • resources/config/application.properties(项目resources目录中config目录下)
  • resources/config/application.yml
  • resources/application.properties(项目的resources目录下)
  • resources/application.yml

项目同级目录,相当于生产环境中的JAR包。
3、配置文件中只要有spring.profiles.active=dev代码程序就会激活。如果该代码在包内,程序会优先读取包外的配置(包外的conf/application-dev.properties->conf/application-dev.yml->application-dev.properties->application-dev.yml)再读取包内的配置。如果配置在包外,很容易理解,就不赘述了。
举个例子,项目包的部署后的目录结构如下:

│─SpringBootTest
│  │  application-dev.properties
│  │  application.properties
│  │  SpringBootDemo-0.0.1-SNAPSHOT.jar
│  └──config
│          application-dev.properties
│          application.yml

spring.profiles.active=dev代码在包SpringBootDemo-0.0.1-SNAPSHOT.jar中,其他地方没有。经过测试,发现配置文件的优先级如下所示**(数字越小优先级越高)**:

│─SpringBootTest
│  │  application-dev.properties (2)
│  │  application.properties (4)
│  │  SpringBootDemo-0.0.1-SNAPSHOT.jar (5)
│  └──config
│          application-dev.properties (1)
│          application.yml (3)

包外的dev配置读完,再读包外其他配置,最后读包内的配置。

另一个例子,项目包的部署后的目录结构如下:

├─SpringBootTest
│  │  application.properties
│  │  SpringBootDemo-0.0.1-SNAPSHOT.jar
│  └──config
│          application.yml

spring.profiles.active=dev代码在包SpringBootDemo-0.0.1-SNAPSHOT.jar中,其他地方没有。经过测试,发现配置文件的优先级如下所示**(数字越小优先级越高)**:

├─SpringBootTest
│  │  application.properties (2)
│  │  SpringBootDemo-0.0.1-SNAPSHOT.jar (3)
│  └──config
│          application.yml (1)

包外的配置读完,再读包内的配置。
综上两个例子,可以知道,即使包内有激活profiles的代码会生效,但如果包外有配置会先读包外的配置,并不会优先读包内的dev配置

4、yml和properties混用容易出问题,最好都用同一种格式。
5、现网都要有外置的配置文件,且需要激活profile,这样可以保证优先读取包外的配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值