当前位置: 移动技术网 > IT编程>开发语言>Java > 【玩转SpringBoot】SpringBoot应用的启动过程一览表

【玩转SpringBoot】SpringBoot应用的启动过程一览表

2019年12月23日  | 移动技术网IT编程  | 我要评论
SpringBoot应用的启动方式很简单,就一行代码,如下图01: 其实这行代码背后主要执行两个方法,一个是构造方法,一个是run方法。构造方法主要内容就是收集一些数据,和确认一些信息。如下图02: 真正的执行要从run方法开始,为此,SpringBoot特意定义了一个监听器,专门监听这个run方法 ...


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系列文章 <<<

 



>>> 品spring系列文章 <<<

 

 

>>> 热门文章集锦 <<<

 

 

作者是工作超过10年的码农,现在任架构师。喜欢研究技术,崇尚简单快乐。追求以通俗易懂的语言解说技术,希望所有的读者都能看懂并记住。下面是公众号的二维码,欢迎关注!

  

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网