之前面试时被问到到的问题,当时一想如此基础还不是手拿把掐了吗可就,so easy 啦!
当 application.properties
和 application.yml
同时存在,同样的参数,最终生效的是 application.properties
中的配置。
所以如果项目里因为一些“逆天”原因,导致同时存在这两个配置,那么就要小心覆盖问题了!当然,移除其中一个配置文件才是最佳处理方案!
简单优先级:
命令行参数 > JAR包外面的 application-{profile}.properties
> JAR包内的 application-{profile}.properties
> JAR包外的 application.properties
> JAR包内的 application.properties
扩展 bootstrap 和 application 配置文件知识:
boostrap 由父 ApplicationContext 加载,比 applicaton 优先加载,且它里面的内容不会被覆盖!
比如一些配置中心的配置,需要填写在 boostrap 中,父上下文先去配置中心获取额外的一些配置,然后再启动 SpringBoot 上下文。