热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringMVC启动流程——DispatcherServlet

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应用相关组件。




推荐阅读
author-avatar
隐姓埋名er
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有