java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > application.yaml与bootstrap.yaml

application.yaml与bootstrap.yaml的使用

作者:Surfing鲨鱼

这篇文章主要介绍了application.yaml与bootstrap.yaml的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

application.yaml与bootstrap.yaml

你对这两个文件有没有清晰认识?

application.yaml

bootstrap.yaml

这两大段在讲什么 不能简单讲一下吗?

知识储备

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 #注册中心

当然还有其他原因:

在来看一下3: 想象一下,你的Spring Boot应用需要从Nacos获取数据库连接字符串等关键配置来初始化数据库访问组件(如DataSource)。然而,这些数据库连接信息实际上是存储在Nacos中的。

这就形成了一个逻辑上的依赖链:应用启动 -> 连接Nacos -> 获取数据库配置 -> 初始化数据库连接。如果Nacos的地址或者连接Nacos所需的其他关键参数(如认证信息)也打算通过Nacos来管理,那么就会出现问题,因为这时应用在没有Nacos配置的情况下无法知道如何连接到Nacos以获取这些配置信息,形成了一种“鸡生蛋,蛋生鸡”的困境,即循环依赖。

总结

看到这你应该清楚了 哪些应该写在bootstrap.yaml 哪些应该写在application.yaml 里面

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文