SpringMVC启动流程(总结)

 1、查询JSR的Servlet规范,一个接口(ServletContainerInitializer)处理@HandlesTypes中所有类,也就是通过加载ServletContainerInitializer,会加载@HandlesTypes中所有感兴趣的类,调用感兴趣类的onStartup方法。

2、Spring在类路径下指定了ServletContainerInitializer的SPI实现

3、Tomcat启动,会通过SPI加载Spring指定的类

 

4、通过Servlet规范,最终是会加载@HandlesTypes注解中的所有类

 

5、因此我们只需要实现这个WebApplicationInitializer接口,当tomcat启动的时候就会自动调用onStartup方法(这里可以自定义,可以在启动的时候做一些自己的事情,反正Spring在onStartup做了很多事情,比如创建IOC容器,创建DispatcherServlet等)

 

6、onStartup方法中:准备空的IOC容器,创建了DispatcherServlet

 

7、tomcat启动的时候,会为每一个Servlet创建对象,会自动调用每个Servlet.init()方法(这属于tomcat的机制,同时DispatcherServlet是一个Servlet)

8、然后开始走servlet的init整个流程

-------------------------------------------------------------------------------

为了防止太多而导致比较乱,这里分开两部分

上面主要介绍Servlet规范、Tomcat利用SPI加载Spring目录下的自定义组件、Spring开始逐渐工作(创建IOC容器、DispatcherServlet)

-------------------------------------------------------------------------------

(DispatcherServlet的init创建)

9、查看DispatcherServlet的继承树

 

 

10、DispatcherServlet的init初始化,在初始化的过程中就开始刷新容器的,至此Spring、SpringMVC父子容器的onRefresh就刷新完毕(就在servlet.init方法之中),ss就算启动了。

 

11、Spring的OnRefresh是十二大步,SpringMVC的OnRefresh是初始化九大组件

总结:

       1、找到Servlet规范,知道了@HandlesTypes加载感兴趣的类

       2、Tomcat利用SPI机制,加载Spring目录下对Servlet规范实现的一个实现类

       3、Spring注册DispatcherServlet(一个Servlet)

       4、Tomcat启动机制,启动之后自动调用所有Servlet的init方法

       5、DispatcherServlet.init方法中刷新了Spring、SpringMVC容器,使得整个项目启动

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值