SpringBoot启动流程

实例化流程

  1. 推断应用类型,创建的是REACTIVE应用、SERVlET应用、NONE三种中的一种
  2. 使用SpringFactoreisLoader查找并加载classpath下META-INF/spring.factories文件中所有可用的ApplicationContextInitializer
  3. 使用SpringFactoreisLoader查找并加载classpath下META-INF/spring.factories文件中所有可用的ApplicationContextListener
  4. 推断并设置main方法

run()方法探求

  1. 通过SpringFactoreisLoader加载 classpath下META-INF/spring.factories文件 ,创建并获取 SpringApplicationRunListener对象
  2. 然后由 SrpingApplicationRunListener来发出starting消息
  3. 创建参数,并配置当前SpringBoot应用将要使用的Eviroment
  4. 完成之后,依然由SpringApplicationRunListener来发出enviromentPrepared消息
  5. 创建ApplicationContext
  6. 初始化ApplicationContext, 并设置Environment,加载相关配置等
  7. SpringApplicationRunListener来发出contextPrepared消息,告知SpringBoot应用使用的ApplicationContext准备完毕
  8. 将各种beans装载入ApplicationContext,继续由SpringApplicaitonRunListener发出contextLoaded消息,告知Spring Boot应用使用的Application Context已装填OK
  9. refresh ApplicationContext,完成IOC容器可用的最后一步
  10. 由SpringApplicationRunListener来发出started消息
  11. 调用callRuners(...)方法,让实现了ApplicationRunnerCommandLineRunner接口类的run方法得以执行,用于在Spring应用上下文准备完毕后,执行一些额外操作。从而完成最终的程序启动
  12. SpringApplicationRunListener来发出runing消息,告知程序已运行起来了.

[Spring] SpringBoot启动流程的更多相关文章

  1. SpringBoot启动流程解析

    写在前面: 由于该系统是底层系统,以微服务形式对外暴露dubbo服务,所以本流程中SpringBoot不基于jetty或者tomcat等容器启动方式发布服务,而是以执行程序方式启动来发布(参考下图ke ...

  2. SpringBoot启动流程分析(五):SpringBoot自动装配原理实现

    SpringBoot系列文章简介 SpringBoot源码阅读辅助篇: Spring IoC容器与应用上下文的设计与实现 SpringBoot启动流程源码分析: SpringBoot启动流程分析(一) ...

  3. SpringBoot启动流程分析(六):IoC容器依赖注入

    SpringBoot系列文章简介 SpringBoot源码阅读辅助篇: Spring IoC容器与应用上下文的设计与实现 SpringBoot启动流程源码分析: SpringBoot启动流程分析(一) ...

  4. SpringBoot启动流程分析(一):SpringApplication类初始化过程

    SpringBoot系列文章简介 SpringBoot源码阅读辅助篇: Spring IoC容器与应用上下文的设计与实现 SpringBoot启动流程源码分析: SpringBoot启动流程分析(一) ...

  5. SpringBoot启动流程分析(二):SpringApplication的run方法

    SpringBoot系列文章简介 SpringBoot源码阅读辅助篇: Spring IoC容器与应用上下文的设计与实现 SpringBoot启动流程源码分析: SpringBoot启动流程分析(一) ...

  6. SpringBoot启动流程分析(三):SpringApplication的run方法之prepareContext()方法

    SpringBoot系列文章简介 SpringBoot源码阅读辅助篇: Spring IoC容器与应用上下文的设计与实现 SpringBoot启动流程源码分析: SpringBoot启动流程分析(一) ...

  7. SpringBoot启动流程分析(四):IoC容器的初始化过程

    SpringBoot系列文章简介 SpringBoot源码阅读辅助篇: Spring IoC容器与应用上下文的设计与实现 SpringBoot启动流程源码分析: SpringBoot启动流程分析(一) ...

  8. SpringBoot启动流程及其原理

    Spring Boot.Spring MVC 和 Spring 有什么区别? 分别描述各自的特征: Spring 框架就像一个家族,有众多衍生产品例如 boot.security.jpa等等:但他们的 ...

  9. springboot启动流程(一)构造SpringApplication实例对象

    所有文章 https://www.cnblogs.com/lay2017/p/11478237.html 启动入口 本文是springboot启动流程的第一篇,涉及的内容是SpringApplicat ...

  10. Spring Boot启动流程分析

    引言 早在15年的时候就开始用spring boot进行开发了,然而一直就只是用用,并没有深入去了解spring boot是以什么原理怎样工作的,说来也惭愧.今天让我们从spring boot启动开始 ...

随机推荐

  1. Linux第四章 进程

    4.1 前言 本章讨论进程概念.资源.属性. 4.2 内核和进程的关系 当系统启动时,内核代码被加载到内存,初始化之后,启动第一个用户进程,然后内核的代码就等着用户进程来调度了. 4.3 进程是程序的 ...

  2. [深度学习] Contractive Autoencoder

    ​  转载于DeepLearning: Contractive Autoencoder - dupuleng - 博客园 一.雅克比矩阵 雅克比矩阵是一阶偏导,假设(x1,x2,....,xn)到(y ...

  3. Hive详解(04) - hive函数的使用

    Hive详解(04) - hive函数的使用 系统内置函数 查看系统自带的函数 hive> show functions; 显示自带的函数的用法 hive> desc function u ...

  4. ArcGIS工具 - 批量合并数据库

    在ArcGIS数据建库和入库过程中,经常需要将数据结构相同.数据内容不同的多个数据库文件进行合并,使用工具臬中复制.合并.追加都可以达到一定的效果,但都不能直接支持数据库的操作.当合并成百上千个数据库 ...

  5. [LeetCode]二进制求和

    题目 代码 class Solution { public: string addBinary(string a, string b) { int lenA = a.length(); int len ...

  6. angular8实现前端携带cookie发送给后端+nodejs获取前端发送的cookie

    1.前端测试代码angular8 // 测试代码 testCookie() { const url = 'http://10.11.11.11:3000/test/cookie' const para ...

  7. Linux基础介绍

    Linux基础介绍 一.运维的本质 运维:运行维护应用程序 岗位需求:自动化运维.DBA.docker+K8s 运维的本质: 1.尽可能保证应用程序24小时不间断运行 2.尽可能保证数据的安全 3.尽 ...

  8. 【分析笔记】Linux input 子系统原理分析

    一.input 子系统简介 输入子系统主要用于支持各种输入设备,可大大简化这类设备驱动的开发难度.以下为个人的理解,可能不同的内核版本会略有差异,在这里分析的内核为 linux-4.9. 无论在 Li ...

  9. 用户行为分析模型实践(三)——H5通用分析模型

    作者:vivo 互联网大数据团队- Zhao Wei.Tian Fengbiao.Li Xiong 本文从提升用户行为分析效率角度出发,详细介绍了H5埋点方案规划,埋点数据采集流程,提供可借鉴的用户行 ...

  10. 教你解决虚拟机用不了USB设备的苦恼。

    如果你看见了上图的效果说明我们的苦恼是一样一样的. vm10 vm11 vm player都有这个问题!!!!  对不对?哈哈 . 在虚拟机右击设备点击连接(Connect) 然后听见你的电脑发出了硬 ...