面试题-SpringCloud的启动流程

关键词

  • prepareEnvironment
  • BootstrapApplicationListener
  • BootStrap Context(启动应用上下文)
  • Environment中bootstrap属性

面试回答

  1. 引入SpringCloud相关组件后,均会引入一个spring-cloud-context 的依赖包,这个项目的META-INF/spring.factories 中会引入一个监听器(BootstrapApplicationListener)
  2. SpringBoot主应用上下文 启动流程中,会有一个prepareEnvironment阶段 ,该阶段完成后,会发布事件触发BootstrapApplicationListener监听逻辑
  3. BootstrapApplicationListener 会触发一个新的SpringBoot应用上下文(即Bootstrap Context)的启动流程
  4. 最终,Bootstrap Context 将会作为SpringBoot主应用上下文父应用上下文

BootstrapApplicationListener 发起Bootstrap Context启动流程之前,会向Environment 中放置一个bootstrap属性 。所以当Bootstrap Context 在走SpringBoot启动流程时**,虽然也会走到 prepareEnvironment阶段并触发 BootstrapApplicationListener的监听逻辑,但是此时 BootstrapApplicationListener由于判断到 Environment中存在bootstrap属性,**就会跳过剩余逻辑。

相关推荐
APIshop7 小时前
Java爬虫1688详情api接口实战解析
java·开发语言·爬虫
Evan芙7 小时前
Tomcat内存机制以及按场景调优
java·tomcat
总爱写点小BUG7 小时前
打印不同的三角形(C语言)
java·c语言·算法
星辰烈龙8 小时前
黑马程序员Java基础9
java·开发语言
山沐与山8 小时前
【Redis】Redis集群模式架构详解
java·redis·架构
ss2738 小时前
Java并发编程:DelayQueue延迟订单系统
java·python·算法
wcy_10118 小时前
七大软件设计原则
java·设计规范
invicinble8 小时前
jar包在执行的时候需要关注的细节(提供一个解构jvm问题的视角)
java·jvm·jar
麦芽糖02198 小时前
SSE介绍及使用(Server-Send Events)
java
alan07218 小时前
【Java + Elasticsearch全量 & 增量同步实战】
java·elasticsearch·jenkins