SpringMVC相关流程图解

1,614 阅读2分钟

1、Spring MVC类图和流程

(1)Spring MVC流程

(2)Spring MVC时序图

流程描述:

1.用户向服务器发送请求,请求被Spring前端控制DispatcherServlet捕获

2.DispatcherServlet对请求URL进行解析,得到请求资源标识符。然后根据该标识符,调用HandlerMapping获得该Handler配置的所有相关对象(包括Handler对象以及Handler对象对应的拦截器),最后已HandlerExecutionChain对象形式返回。

3.DispatcherServlet根据获得的Handler,选择一个合适的HandlerAdator.

4.提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller).在填充Handler的入参过程中,根据配置,Spring帮我们做一些额外的工作:HttpMessageConvert: 将请求消息(如Json、Xml等数据)转换成一个对象,将队形转换为指定的响应消息

5.Handler执行完成后,向DispatcherServlet返回衣蛾ModelAndView对象

6.根据返回的ModelAndView,选择一个适合的ViewResolver返回给DispatcherServlet

7.ViewResolver结合Model和View,来渲染视图

8.将渲染的结果返回给客户端

(3)ContextLoaderListener初始化上下文和DispatcherServlet上下文之间的关系

ContextLoaderListener初始化的上下文加载的Bean是对整个应用程序共享的,不管是使用什么表现层技术,一般如Dao层、Service层Bean

DispatcherServlet初始化的上下文加载的Bean是只对Spring Web MVC有效的Bean,如Controller、HandlerMapping、HandlerAdaptor等,该初始化上下文只加载Web相关的组件。

DispatcherServlet初始化自己的上下文工作在其initStrategies方法中,只初始化了处理器映射器、视图解析等。

2、源码解析

(1)ContextLoaderListener初始化过程 类层次结构

ContextLoaderListener初始化时序图

(2)DispatcherServlet初始化过程

首先对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的Spring IOC容器提供宿主环境。

参考:www.jianshu.com/p/16cbac55a…