[Spring] SpringBoot启动流程
SpringBoot启动流程
实例化流程
- 推断应用类型,创建的是REACTIVE应用、SERVlET应用、NONE三种中的一种
- 使用
SpringFactoreisLoader查找并加载classpath下META-INF/spring.factories文件中所有可用的ApplicationContextInitializer - 使用
SpringFactoreisLoader查找并加载classpath下META-INF/spring.factories文件中所有可用的ApplicationContextListener - 推断并设置main方法
run()方法探求
- 通过
SpringFactoreisLoader加载 classpath下META-INF/spring.factories文件 ,创建并获取 SpringApplicationRunListener对象 - 然后由
SrpingApplicationRunListener来发出starting消息 - 创建参数,并配置当前SpringBoot应用将要使用的Eviroment
- 完成之后,依然由
SpringApplicationRunListener来发出enviromentPrepared消息 - 创建ApplicationContext
- 初始化
ApplicationContext, 并设置Environment,加载相关配置等 - 由
SpringApplicationRunListener来发出contextPrepared消息,告知SpringBoot应用使用的ApplicationContext准备完毕 - 将各种beans装载入ApplicationContext,继续由
SpringApplicaitonRunListener发出contextLoaded消息,告知Spring Boot应用使用的Application Context已装填OK - refresh ApplicationContext,完成IOC容器可用的最后一步
- 由SpringApplicationRunListener来发出started消息
- 调用
callRuners(...)方法,让实现了ApplicationRunner和CommandLineRunner接口类的run方法得以执行,用于在Spring应用上下文准备完毕后,执行一些额外操作。从而完成最终的程序启动 - 由
SpringApplicationRunListener来发出runing消息,告知程序已运行起来了.
[Spring] SpringBoot启动流程的更多相关文章
- SpringBoot启动流程解析
写在前面: 由于该系统是底层系统,以微服务形式对外暴露dubbo服务,所以本流程中SpringBoot不基于jetty或者tomcat等容器启动方式发布服务,而是以执行程序方式启动来发布(参考下图ke ...
- SpringBoot启动流程分析(五):SpringBoot自动装配原理实现
SpringBoot系列文章简介 SpringBoot源码阅读辅助篇: Spring IoC容器与应用上下文的设计与实现 SpringBoot启动流程源码分析: SpringBoot启动流程分析(一) ...
- SpringBoot启动流程分析(六):IoC容器依赖注入
SpringBoot系列文章简介 SpringBoot源码阅读辅助篇: Spring IoC容器与应用上下文的设计与实现 SpringBoot启动流程源码分析: SpringBoot启动流程分析(一) ...
- SpringBoot启动流程分析(一):SpringApplication类初始化过程
SpringBoot系列文章简介 SpringBoot源码阅读辅助篇: Spring IoC容器与应用上下文的设计与实现 SpringBoot启动流程源码分析: SpringBoot启动流程分析(一) ...
- SpringBoot启动流程分析(二):SpringApplication的run方法
SpringBoot系列文章简介 SpringBoot源码阅读辅助篇: Spring IoC容器与应用上下文的设计与实现 SpringBoot启动流程源码分析: SpringBoot启动流程分析(一) ...
- SpringBoot启动流程分析(三):SpringApplication的run方法之prepareContext()方法
SpringBoot系列文章简介 SpringBoot源码阅读辅助篇: Spring IoC容器与应用上下文的设计与实现 SpringBoot启动流程源码分析: SpringBoot启动流程分析(一) ...
- SpringBoot启动流程分析(四):IoC容器的初始化过程
SpringBoot系列文章简介 SpringBoot源码阅读辅助篇: Spring IoC容器与应用上下文的设计与实现 SpringBoot启动流程源码分析: SpringBoot启动流程分析(一) ...
- SpringBoot启动流程及其原理
Spring Boot.Spring MVC 和 Spring 有什么区别? 分别描述各自的特征: Spring 框架就像一个家族,有众多衍生产品例如 boot.security.jpa等等:但他们的 ...
- springboot启动流程(一)构造SpringApplication实例对象
所有文章 https://www.cnblogs.com/lay2017/p/11478237.html 启动入口 本文是springboot启动流程的第一篇,涉及的内容是SpringApplicat ...
- Spring Boot启动流程分析
引言 早在15年的时候就开始用spring boot进行开发了,然而一直就只是用用,并没有深入去了解spring boot是以什么原理怎样工作的,说来也惭愧.今天让我们从spring boot启动开始 ...
随机推荐
- Linux第四章 进程
4.1 前言 本章讨论进程概念.资源.属性. 4.2 内核和进程的关系 当系统启动时,内核代码被加载到内存,初始化之后,启动第一个用户进程,然后内核的代码就等着用户进程来调度了. 4.3 进程是程序的 ...
- [深度学习] Contractive Autoencoder
转载于DeepLearning: Contractive Autoencoder - dupuleng - 博客园 一.雅克比矩阵 雅克比矩阵是一阶偏导,假设(x1,x2,....,xn)到(y ...
- Hive详解(04) - hive函数的使用
Hive详解(04) - hive函数的使用 系统内置函数 查看系统自带的函数 hive> show functions; 显示自带的函数的用法 hive> desc function u ...
- ArcGIS工具 - 批量合并数据库
在ArcGIS数据建库和入库过程中,经常需要将数据结构相同.数据内容不同的多个数据库文件进行合并,使用工具臬中复制.合并.追加都可以达到一定的效果,但都不能直接支持数据库的操作.当合并成百上千个数据库 ...
- [LeetCode]二进制求和
题目 代码 class Solution { public: string addBinary(string a, string b) { int lenA = a.length(); int len ...
- angular8实现前端携带cookie发送给后端+nodejs获取前端发送的cookie
1.前端测试代码angular8 // 测试代码 testCookie() { const url = 'http://10.11.11.11:3000/test/cookie' const para ...
- Linux基础介绍
Linux基础介绍 一.运维的本质 运维:运行维护应用程序 岗位需求:自动化运维.DBA.docker+K8s 运维的本质: 1.尽可能保证应用程序24小时不间断运行 2.尽可能保证数据的安全 3.尽 ...
- 【分析笔记】Linux input 子系统原理分析
一.input 子系统简介 输入子系统主要用于支持各种输入设备,可大大简化这类设备驱动的开发难度.以下为个人的理解,可能不同的内核版本会略有差异,在这里分析的内核为 linux-4.9. 无论在 Li ...
- 用户行为分析模型实践(三)——H5通用分析模型
作者:vivo 互联网大数据团队- Zhao Wei.Tian Fengbiao.Li Xiong 本文从提升用户行为分析效率角度出发,详细介绍了H5埋点方案规划,埋点数据采集流程,提供可借鉴的用户行 ...
- 教你解决虚拟机用不了USB设备的苦恼。
如果你看见了上图的效果说明我们的苦恼是一样一样的. vm10 vm11 vm player都有这个问题!!!! 对不对?哈哈 . 在虚拟机右击设备点击连接(Connect) 然后听见你的电脑发出了硬 ...