SpringBoot学习(启动流程源码分析)

SpringBoot启动流程

启动流程主要分为三个步骤
1、进行SpringApplication的初始化模块,配置一些基本的环境变量、资源、构造器、监听器
2、实现了应用具体的启动方案,包括启动流程的监听模块、加载配置环境模块、及核心的创建Spring上下文环境模块
3、自动化配置模块,开模块是SpringBoot自动配置的核心

宏观步骤

1、创建并启动及时监控类StopWatch
2、初始化应用上下文和异常报告集合(ConfigurableApplicationContext和Collection< SpringBootExceptionReporter >)
3、设置系统属性configureHeadlessProperty()
4、创建Spring运行的监听器并启动
5、初始化默认应用参数类
6、准备Spring环境
7、创建beanner打印类
8、创建应用Spring上下文(也就是spring容器)
9、准备异常报告类
10、准备应用上下文(也就是spring容器)
11、刷新上下文(也就是spring容器)
12、应用上下文刷新后置处理(也就是spring容器)
13、停止计时监控类
14、输出日志信息
15、发布应用上下文启动完成事件
16、执行所有Runner运行器(如果实现CommandLineRunner接口)
17、发布应用上下文就绪事件
18、完成返回容器对象

源码分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
//这个run方法主要做两个事情
1、new了一个SpringApplication这么一个对象
(1)把main方法这个类赋给一个成员变量
(2)判断是java项目还是web项目
(3)设置了一个初始化器和事件发送的监听器
2、然后执行SpringApplication对象的run方法()
在这里插入图片描述
在这里插入图片描述这里面用到类一种类似于Java SPI机制的方式扫描META-INF/spring.factories这个文件,并且加载ApplicationContextInitializer、ApplicationListener接口实例
(1)ApplicationContextInitializer这个类当springboot上下文Context初始化完成后会调用
(2)ApplicationListener当springboot启动时事件change后都会触发,我们可以自定义实现ApplicationContextInitializer、ApplicationListener接口,然后运行时会被触发执行。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
onRefresh()方法中可以看到内置的tomcat容器的创建

总结

1、new了一个SpringApplication对象,使用一种类似于SPI机制的技术加载ApplicationContextInitializer、ApplicationListener接口实例
2、调用SpringApplication.run()方法
3、嗲用createApplicationContet()方法创建Spring IOC上下文对象,创建上下文对象同时会注册spring的核心组件类ConfigurationClassPostProcessor\AutowiredAnnotationBeanPostProcessor等
4、调用refreshContext()方法启动Spring容器和内置的Servlet容器

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值