spring mvc 执行流程和模块分解
前言
本文通过阅读官方文档并结合代码调试的方式对spring mvc的执行流程和内部模块进行拆解,
主要目的在于学习spring的设计理念同时加深对其的了解。
Spring MVC官方文档
Version 5.3.22
https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc%20springmvc
Spring Web MVC是基于Servlet API构建的原始Web框架,从一开始就包含在Spring Framework中。正式名称“Spring Web MVC”来自其源模块(spring-webmvc)的名称,但它通常被称为“Spring MVC”。Spring Framework 5.0引入了一个反应式堆栈Web框架,其名称“Spring WebFlux”也基于其源模块(spring-webflux)。
Spring MVC与许多其他Web框架一样,是围绕前端控制器模式设计(DispatcherServlet)的,为请求处理提供共享算法,而实际工作由可配置的委托组件执行。此模型非常灵活,支持不同的工作流。Servlet DispatcherServlet与其它实现一样,需要根据 Servlet 规范使用 Java 配置或在 中声明和映射。反过来,使用Spring配置来发现请求映射,视图解析,异常处理等所需的委托组件。
DispatcherServlet
Servlet
web.xml
DispatcherServlet
环境
组件 | 版本 |
---|---|
spring web | 5.3.8 |
java | 11 |
一、spring mvc架构图
// TODO
二、spring mvc概要流程图
三、spring mvc 请求内部流程细则
四、模块拆解
4.1.HandlerMapping
4.1.1.spring mvc怎么在一次请求中找到controller
4.1.2.RequestMappingInfo
4.1.3.HandlerMethod
4.2.HandlerAdapter
4.2.1.spring mvc怎么样调用controller(method)
4.2.2.RequestMappingHandlerAdapter
4.3.HttpMessageConverter
总结
以上就是今天要讲的内容,本文介绍了spring mvc的使用,经过对spring mvc的深入了解可以帮助我们在后面开发web应用时对各种常用组件(filter、intercepter、HttpMessageConverer)的使用和问题排查。