作者:隐姓埋名er | 来源:互联网 | 2024-09-27 11:14
SpringMVC启动流程——DispatcherServlet由于DispatcherServlet本身就是一个Servlet,它的本质上是一个Servlet,只是子类不断的对H
SpringMVC启动流程—— DispatcherServlet
由于DispatcherServlet本身就是一个Servlet,它的本质上是一个Servlet,只是子类不断的对HttpServlet父类进行方法扩展,这里我们就以他为例来跟踪一下Servlet的注册流程吧!
1. DispatcherServlet类
可以看到,它底层也是继承HttpServlet来实现的,所以他也是一个Servlet,只不过它比较特殊,SpringMVC的所有请求都是通过它来进行请求处理的。
我们通过在web.xml中配置DispatcherServlet来进行注册,接下来我们可以看看他的启动流程。
2. DispatcherServlet注册流程
2.1 HttpServletBean的init
这是一个抽象类,公共的部分他都实现了,变化的部分统一来抽象,交给其子类来实现,在它的init方法里然后又通过调用initServletBean(这个方法是子类实现的)
2.2 FrameworkServlet的initServletBean方法
在该方法中DispatchServlet的父类FrameworkServlet会重写其父类的initServletBean方法,并调用initWebApplicationContext()以及onRefresh()方法。
2.3 FrameworkServlet的initWebApplicationContext()方法
initWebApplicationContext()方法会创建一个当前servlet的一个IoC子容器,并读取标签的配置的xml文件并加载相关配置。
2.4 DispatcherServlet的onRefresh方法
最后调用onRefresh方法加载相关web组件。
3. 流程汇总
1、初始化创建,一般使用DispatchServlet类。
2、DispatchServlet的父类FrameworkServlet会重写其父类的initServletBean方法,并调用initWebApplicationContext()以及onRefresh()方法。
3、initWebApplicationContext()方法会创建一个当前servlet的一个IoC子容器。
4、读取标签的配置的xml文件并加载相关Bean。
5、onRefresh()方法创建Web应用相关组件。