所有用到 SpringBoot 的同学都知道,SpringBoot 是同时支持 yml 和 properties 格式的配置的。比如,在项目中,我们可以使用 application.yml 或者 application.properties 文件来编写配置。
大部分人都以为 SpringBoot 的文件配置是 二选一,要么使用 application.yml ,要么使用 application.properties 。但是,我们有些配置放在 yml 中合适,有些放在 properties 文件里面书写起来更方便,非要做二选一的取舍的话,就会很不爽。
其实,SpringBoot 是同时支持 application.yml 和 application.properties 同时并存的。
不仅如此,SpringBoot 在使用 spring.profiles.active
或 spring.profiles.include
引入其他配置文件时,同样可以支持 yml 和 properties 文件共存,是非常方便的友好的。
比如,在 application.yml 中有如下配置:
spring:
profiles:
active: dev
那么,我们的工程可以同时使用 application-dev.yml 和 application-dev.properties 来编写配置,不用做二选一的取舍。
原理分析
org.springframework.boot.context.config.StandardConfigDataLocationResolver#getReferencesForConfigName
SpringBoot 版本: spring-boot-2.7.11.jar
断点时,可以发现,其实 SpringBoot 在寻找配置文件时,是同时支持 yml, properties 和 xml 形式的配置的。