320人参与 • 2024-08-23 • Bootstrap
application.yaml
在spring应用上下文初始化之后被加载,这意味着大部分bean的创建和自动配置都会考虑到这里的配置信息。application.yaml
中的配置。bootstrap.yaml
文件比application.yaml
更早加载,它在应用程序的引导阶段就被处理,用于应用程序上下文初始化之前的配置,比如配置中心的配置。bootstrap.yaml
中配置config server的地址,这样spring cloud会先从config server获取配置信息,再初始化spring boot应用。这两大段在讲什么 不能简单讲一下吗?
spring上下文启动:加载配置 -》 bean读取 -》 bean的实例化 -》 bean的初始化 -》 启动后监听
容器初始化阶段(加载配置阶段) springboot 会读取 application.yaml 文件
bootstrap.yaml 文件在加载配置阶段前 就已经读取了
bootstrap.yaml
更早加载,主要用于引导配置,影响整个应用的初始化;而 application.yaml
加载较晚,负责应用的主体配置,灵活性和可覆盖性更高。
bootstrap
配置文件在spring boot应用的启动过程中比application
配置文件具有更高的优先级。
这意味着在应用初始化的最早阶段,spring会先读取bootstrap
文件中的配置。
由于nacos作为配置中心,负责提供应用运行时所需的配置信息,将其地址放在bootstrap
中可以确保应用在加载其他任何配置或初始化bean之前就能建立起与nacos的连接,从而能够及时获取到所有必需的配置。
server: port: 3000 # 前端默认访问端口号为3000 servlet: context-path: / # 前端默认访问的根路径 spring: application: name: gateway-service # 程序名就是服务名 cloud: nacos: server-addr: 174.148.4.170:8848 #注册中心
当然还有其他原因:
bootstrap
配置主要用于应用程序的引导阶段,它配置的内容是用来引导spring boot应用上下文的创建,比如配置中心的地址、安全证书、加密解密的密钥等基础设施级别的设置。而application
配置则是关于应用本身的业务逻辑和特性配置。将nacos地址这样的基础设施配置与业务逻辑配置分离开来,有助于清晰地组织配置,同时也便于管理和维护。bootstrap
中,可以减少这些关键信息被不当覆盖的风险,因为bootstrap
的配置不容易被外部环境变量或其他配置源所覆盖。这对于生产环境尤其重要,保证了系统的稳定性和安全性。在来看一下3: 想象一下,你的spring boot应用需要从nacos获取数据库连接字符串等关键配置来初始化数据库访问组件(如datasource)。然而,这些数据库连接信息实际上是存储在nacos中的。
这就形成了一个逻辑上的依赖链:应用启动 -> 连接nacos -> 获取数据库配置 -> 初始化数据库连接。如果nacos的地址或者连接nacos所需的其他关键参数(如认证信息)也打算通过nacos来管理,那么就会出现问题,因为这时应用在没有nacos配置的情况下无法知道如何连接到nacos以获取这些配置信息,形成了一种“鸡生蛋,蛋生鸡”的困境,即循环依赖。
看到这你应该清楚了 哪些应该写在bootstrap.yaml 哪些应该写在application.yaml 里面
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论