??基于最新Spring 5.x,详细介绍了Spring MVC 请求的执行流程源码,给出了更加详细的Spring MVC请求执行流程步骤总结,以及详细的执行流程图。
??我正在参与CSDN《新程序员》有奖征文,活动地址:https://marketing.csdn.net/p/52c37904f6e1b69dc392234fff425442。
??此前,我们学习了Spring MVC项目启动初始化过程中的部分重要源码,Spring MVC项目启动之后,便能够接受请求、处理请求。
??此前,我们已经学习了Spring MVC的请求执行流程,但实际上在Spring MVC请求执行流程过程中,要做的事儿有很多,比图CORS配置、参数转换等等,现在让我们从源码的角度再一次深入了解Spring MVC 请求的执行流程。
??在文章的最后我们也给出了更加详细的Spring MVC请求执行流程步骤总结,以及详细的执行流程图,嫌弃源码太长的小伙伴可以直接跳到末尾。
??下面的源码版本基于5.2.8.RELEASE
。
Spring MVC源码 系列文章
Spring MVC 初始化源码(1)—ContextLoaderListener与父上下文容器的初始化
Spring MVC 初始化源码(2)—DispatcherServlet与子容器的初始化以及MVC组件的初始化【一万字】
Spring MVC 初始化源码(3)—<mvc:annotation-driven >配置标签的源码解析
Spring MVC 初始化源码(4)—@RequestMapping注解的源码解析
Spring MVC 请求执行流程的源码深度解析【两万字】
文章目录
- Spring MVC源码 系列文章
- 1 源码入口
- 2 FrameworkServlet#service入口
- 3 processRequest处理请求
- 3.1 doService处理请求
- 3.2 publishRequestHandledEvent发布请求处理完毕事件
- 4 doDispatch分发请求
- 4.1 checkMultipart检查文件上传请求
- 4.2 getHandler获取HandlerExecutionChain
- 4.2.1 mapping#getHandler获取HandlerExecutionChain
- 4.2.1.1 getHandlerInternal获取内部处理器
- 4.2.1.1.1 lookupHandlerMethod查找匹配的HandlerMethod
- 4.2.1.2 CORS配置
- 4.2.1.2.1 hasCorsConfigurationSource是否具有CORS配置
- 4.2.1.2.2 getCorsHandlerExecutionChain配置CORS
- 4.3 noHandlerFound没找到handler的处理
- 4.4 getHandlerAdapter获取HandlerAdapter
- 4.4.1 adapter#supports是否支持handler
- 4.5 applyPreHandle执行拦截器的预处理
- 4.6 handle实际处理请求
- 4.6.1 invokeHandlerMethod执行HandlerMethod
- 4.6.1.1 invokeAndHandle执行请求并处理
- 4.6.1.1.1 invokeForRequest执行请求
- 4.6.1.1.2 handleReturnValue处理返回值
- 4.6.1.2 getModelAndView获取ModelAndView
- 4.7 processDispatchResult处理异常或渲染视图
- 4.7.1 render渲染视图
- 4.7.1.1 resolveViewName解析视图名
- 4.7.1.2 view#render渲染视图
- 4.7.1.2.1 renderMergedOutputModel执行渲染
- 5 总结
cs