当 application.properties 和 application.yml 同时存在,同样的参数,最终生效的是 application.properties 中的配置。

所以如果项目里因为一些“逆天”原因,导致同时存在这两个配置,那么就要小心覆盖问题了!当然,移除其中一个配置文件才是最佳处理方案!

再扩展下 Spring Boot 在启动时加载配置属性的顺序,可参考如下的官方文档:

图片

从上到下,优先级逐渐降低,即下面的配置,同样的参数会被上面的配置所覆盖。

简单优先级:

命令行参数 > JAR包外面的 application-{profile}.properties > JAR包内的 application-{profile}.properties > JAR包外的 application.properties > JAR包内的 application.properties

扩展 bootstrap 和 application 配置文件知识:

boostrap 由父 ApplicationContext 加载,比 applicaton 优先加载,且它里面的内容不会被覆盖!

比如一些配置中心的配置,需要填写在 boostrap 中,父上下文先去配置中心获取额外的一些配置,然后再启动 SpringBoot 上下文。

扫码领红包

微信赞赏支付宝扫码领红包

发表回复

后才能评论