基于SpringBoot bootstrap.yml配置未生效的解决
我就废话不多说了,大家还是直接看代码吧~
org.springframework.cloud spring-cloud-context
补充知识:SpringBoot不读取bootstrap.yml/properties文件
今天写创建了一个SpringBoot项目,配置文件从其他项目拷贝了一份bootstrap.yml
之前一直用的application.yml
心想:application.yml优先级没有bootstrap.yml高,bootstrap配置文件肯定没问题
项目一跑来,发现配置文件里面的内容没读取到。
之后通过各种查资料,才明白了application.yml和bootstrap.yml的区别,不仅仅是优先级的问题。
先说我的问题是什么原因吧:
SpringBoot项目中如果没有依赖spring-cloud-context的话,是不会读取bootstrap.properties文件
也就是说
bootstrap.yml配置是SpringCloud项目才会用到的。
如果你的项目仅仅是一个SpringBoot项目,只会识别application.yml配置文件。
由于SpringCloud是基于SpringBoot构建的,所有SpringCloud项目两种文件都会识别,这个时候才有优先级的说法,SpringCloud项目是会优先读取bootstrap配置在读取application配置。
引用Spring官网的一句话
ASpringCloudapplicationoperatesbycreatinga“bootstrap”context,whichisaparentcontextforthemainapplication.Outoftheboxitisresponsibleforloadingconfigurationpropertiesfromtheexternalsources,andalsodecryptingpropertiesinthelocalexternalconfigurationfiles.
SpringCloud应用是基于一个“bootstrap”的上下文运行的。
也就说明了bootstrap这个配置是SpringCloud应用才会用的。
而且这个配置是不能被覆盖的,也就是优先级比application配置中的高。
什么配置在application配置?什么配置在bootstrap里面配置?
1、当使用SpringCloudConfigServer的时候,spring.application.name和spring.cloud.config.server.git.uri应该在bootstrap.yml里面指定
2、一些加密解密的配置也应该配置在bootstrap里面
英文好的可以参考官网文章:
https://cloud.spring.io/spring-cloud-commons/multi/multi__spring_cloud_context_application_context_services.html#customizing-bootstrap-properties
以上这篇基于SpringBootbootstrap.yml配置未生效的解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。