application.properties、application.yml
application.properties的优先级高于application.yml,项目会先加载优先级低的,即如果两个文件中都配置了端口号,只有properties中的端口号有效,而yml文件中端口配置无效。
特殊情况:
项目resource下存在多个application.yml文件和一个application.properties文件,一般application.properties优先级高于application.yml,项目会先加载优先级低的,所有application.properties会覆盖application.yml中相同的配置,但是如存在application.yml和application-dev.yml文件,application.yml文件中指定spring.profiles.action:dev,那么他的加载顺序:
1.先加载application.yml获取到spring.profiles.action配置;
2.再加载application.properties文件;
3.最后(根据spring.profiles.action配置)去加载application-dev.yml文件,会覆盖之前相同的配置。
bootstrap.yml
bootstrap.yml文件也是Spring Boot的默认配置文件,而且其加载的时间相比于application.yml更早。application.yml和bootstrap.yml虽然都是Spring Boot的默认配置文件,但是定位却不相同。
bootstrap.yml可以理解成系统级别的一些参数配置,这些参数一般是不会变动的。application.yml可以用来定义应用级别的参数,如果搭配 spring cloud config 使用,application.yml里面定义的文件可以实现动态替换。
总结就是:
bootstrap.yml文件相当于项目启动时的引导文件,内容相对固定。application.yml文件是微服务的一些常规配置参数,变化比较频繁。
bootstrap.yml 先于 application.yml 先于 application.properties。