【玩转SpringBoot】SpringBoot应用的启动过程一览表
springboot应用的启动方式很简单,就一行代码,如下图01:
其实这行代码背后主要执行两个方法,一个是构造方法,一个是run方法。
构造方法主要内容就是收集一些数据,和确认一些信息。如下图02:
真正的执行要从run方法开始,为此,springboot特意定义了一个监听器,专门监听这个run方法的执行过程。
这个监听器的名字是,springapplicationrunlistener,如下图03:
这个接口的方法其实就表示了springboot应用的启动过程。
备注:这个监听器是springboot自己使用的,我们虽然也可以使用,但有些麻烦。
第一步,启动
当进入run方法后,首先就是获取监听器,并触发starting方法。
应用正式开始启动,如下图04:
第二步,准备环境
最先要准备好的就是environment,因为后续要使用它。
它里面的值也包含启动时的命令行参数,如下图05:
此时会触发监听器的environmentprepared方法,如下图06:
第三步,创建容器
根据应用类型创建适合的spring容器,如下图07:
第四步,准备容器
主要包括把environment设置给容器,执行容器的自定义初始化器。
同时触发监听器的contextprepared方法,如下图08:
第五步,加载资源
这里的资源主要包括应用的主类,还有用户显式设置的类名/包名/xml文件等。
加载这些资源的目的就是为了注册bean定义。
然后再触发监听器的contextloaded方法,如下图09:
第六步,容器刷新
容器刷新主要包括调用“后处理器”进一步注册bean定义。
还包括对所有(非延迟加载)单例bean的实例化和初始化。如下图10:
此时,其实spring容器已经启动成功了。所以触发了监听器的started方法。
表明已经启动了,如下图11:
第七步,调用runner接口
runner接口就是容器启动成功后马上就会被执行的。它的实现类作为bean注册到容器中。
所以是从容器中拿出这些bean再执行,如下图12:
此时,启动过程需要执行的所有东西都已完成。
因此,要触发监听器的running方法,表明已经进入正常运行状态,如下图13:
run方法也已经结束了,就把容器对象返回了,如下图14:
(end)
>>> 玩转springboot系列文章 <<<
【玩转springboot】用好条件相关注解,开启自动配置之门
【玩转springboot】看似复杂的environment其实很简单
【玩转springboot】让错误处理重新由web服务器接管
>>> 品spring系列文章 <<<
品spring:springboot和spring到底有没有本质的不同?
品spring:springboot轻松取胜bean定义注册的“第一阶段”
品spring:springboot发起bean定义注册的“二次攻坚战”
品spring:注解之王@configuration和它的一众“小弟们”
品spring:对@postconstruct和@predestroy注解的处理方法
品spring:对@autowired和@value注解的处理方法
品spring:真没想到,三十步才能完成一个bean实例的创建
品spring:关于@scheduled定时任务的思考与探索,结果尴尬了
>>> 热门文章集锦 <<<
爸爸又给spring mvc生了个弟弟叫spring webflux
【面试】吃透了这些redis知识点,面试官一定觉得你很nb(干货 | 建议珍藏)
【面试】如果你这样回答“什么是线程安全”,面试官都会对你刮目相看(建议珍藏)
【面试】迄今为止把同步/异步/阻塞/非阻塞/bio/nio/aio讲的这么清楚的好文章(快快珍藏)
【面试】一篇文章帮你彻底搞清楚“i/o多路复用”和“异步i/o”的前世今生(深度好文,建议珍藏)
作者是工作超过10年的码农,现在任架构师。喜欢研究技术,崇尚简单快乐。追求以通俗易懂的语言解说技术,希望所有的读者都能看懂并记住。下面是公众号的二维码,欢迎关注!
下一篇: MyBatis 映射文件配置详解
推荐阅读
-
【玩转SpringBoot】SpringBoot应用的启动过程一览表
-
idea整合docker快速部署springboot应用的详细过程
-
SpringBoot启动过程的实现
-
【玩转SpringBoot】通过事件机制参与SpringBoot应用的启动过程
-
【玩转SpringBoot】SpringBoot应用的启动过程一览表
-
SpringBoot——外置Servlet容器启动SpringBoot应用的原理
-
全网最详细的介绍SpringBoot启动过程源码分析
-
SpringBoot的启动过程 --banner.txt实现打印炫酷控制台图案
-
SpringBoot专题学习Part2:简单几步启动SpringBoot的Web应用
-
Spring Boot学习笔记03--深入了解SpringBoot的启动过程