Spring MVC框架核心解析

Spring MVC 框架核心解析(2025 最新版,大厂面试+实战必备)

2025 年 Spring MVC 依然是 Java 后端最主流的 Web 框架(与 WebFlux 并存),阿里、字节、腾讯、美团、京东 90% 以上的传统服务仍然跑在 Spring MVC 上。以下内容全部来自 Spring 6.2 + Spring Boot 3.3 最新源码 + 大厂真实面试题。

一、Spring MVC 整体架构(记住这张图就够了)

用户请求
    ↓ (HttpServletRequest/HttpServletResponse)
前端控制器 DispatcherServlet(核心中的核心!)
    ↓
HandlerMapping          → 找到能处理该请求的 Controller 方法(@RequestMapping)
    ↓
HandlerAdapter          → 真正执行 Controller 方法(支持各种 Handler 类型)
    ↓
Controller 方法执行(返回 String / ModelAndView / @ResponseBody 对象等)
    ↓
ViewResolver(可选)     → 把逻辑视图名(如 "success")解析成真正的视图(Thymeleaf/JSP/FreeMarker)
    ↓
最终渲染响应给浏览器

面试必背一句话
“Spring MVC 的核心是 DispatcherServlet,所有请求都统一由它分发处理,九大组件协同完成一次请求。”

二、Spring MVC 九大核心组件(面试必问!背会直接加20分)

组件作用典型实现类
1. HandlerMappingURL → Controller 方法映射RequestMappingHandlerMapping(主流)
2. HandlerAdapter真正执行各种类型的 HandlerRequestMappingHandlerAdapter(最重要)
3. HandlerExceptionResolver统一异常处理ExceptionHandlerExceptionResolver(@ControllerAdvice)
4. ViewResolver逻辑视图名 → 真实 ViewInternalResourceViewResolver(JSP)、ThymeleafViewResolver
5. RequestToViewNameTranslator当 Controller 返回 null 时,根据请求自动推断视图名DefaultRequestToViewNameTranslator
6. LocaleResolver解析用户区域(国际化 i18n)AcceptHeaderLocaleResolver(默认)
7. ThemeResolver主题切换(皮肤)FixedThemeResolver
8. MultipartResolver文件上传解析StandardServletMultipartResolver
9. FlashMapManagerRedirect 重定向时传递数据(PRG 模式)SessionFlashMapManager

2025 年最常考的是前三个,尤其是 HandlerMapping + HandlerAdapter 的执行流程。

三、一次请求完整执行流程(手绘图必备!)

1. 用户发送 /user/1 → Tomcat → DispatcherServlet.doDispatch()
2. HandlerMapping 遍历所有 @RequestMapping,找到最佳匹配的 HandlerMethod
   └→ RequestMappingHandlerMapping(基于 @RequestMapping 注解)
3. 拿到 HandlerExecutionChain(HandlerMethod + 拦截器列表)
4. HandlerAdapter 执行 Handler
   └→ RequestMappingHandlerAdapter.invokeHandlerMethod()
        ↓
   ① 参数解析器(HandlerMethodArgumentResolver 共 27 种)
      - @PathVariable、@RequestParam、@RequestBody、@ModelAttribute、实体类等
   ② 执行目标方法(反射 invoke)
   ③ 返回值处理器(HandlerMethodReturnValueHandler 共 18 种)
      - @ResponseBody → MappingJackson2HttpMessageConverter(JSON)
      - String → ViewName
      - ModelAndView → 视图渲染
5. 拦截器 postHandle → render → afterCompletion
6. 响应写出

四、最重要的两大类神器(2025 年必考)

1. 参数解析器(27 种,常见 12 种)

解析器能解析什么参数
RequestParamMethodArgumentResolver@RequestParam
PathVariableMethodArgumentResolver@PathVariable
RequestResponseBodyMethodProcessor@RequestBody + @ResponseBody
ModelAttributeMethodProcessor普通 JavaBean(无注解也行)
RequestPartMethodArgumentResolver@RequestPart(文件上传)
ServletRequestMethodArgumentResolverHttpServletRequest
ServletResponseMethodArgumentResolverHttpServletResponse
RedirectAttributesMethodArgumentResolver重定向时传参
ModelMethodProcessorModel

2. 返回值处理器(18 种,常见 10 种)

处理器处理什么返回值
RequestResponseBodyMethodProcessor@ResponseBody 标注的对象(JSON)
ViewNameMethodReturnValueHandler返回 String 作为视图名
ModelAndViewMethodReturnValueHandler返回 ModelAndView
ViewMethodReturnValueHandler返回 View 对象
HttpEntityMethodProcessor返回 ResponseEntity

五、@RestController vs @Controller 区别(99%的人答不全)

项目@Controller@RestController
组成仅 @Component= @Controller + @ResponseBody
返回值默认处理走 ViewResolver(视图解析)直接写响应体(JSON/XML)
典型使用场景返回页面(Thymeleaf、JSP)前后端分离接口

六、拦截器 vs 过滤器 vs AOP(面试三连问)

维度Filter(Servlet)Interceptor(Spring MVC)AOP(Spring)
所属框架Java EESpring MVCSpring
作用范围所有请求(包括静态资源)仅 DispatcherServlet 处理的请求任意 Bean 方法
执行时机DispatcherServlet 前后Handler 执行前后(3 个回调)方法执行前后
是否可访问参数可以可以(HandlerMethod)可以(JoinPoint)
典型用途编码、登录校验、CORS权限校验、日志、事务开启事务、缓存、日志

七、文件上传核心解析( MultipartResolver )

Spring Boot 3.x 默认使用 StandardServletMultipartResolver(基于 Servlet 3.0 Part API)

spring:
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 100MB

接收方式:

@PostMapping("/upload")
public String upload(@RequestPart("file") MultipartFile file) { ... }

八、2025 年最新热点补充

特性说明
Spring MVC + GraalVM Native支持 AOT 编译,启动时间 < 50ms,冷启动性能提升 10 倍+
虚拟线程(Project Loom)支持Spring MVC 6.1+ 完全支持 Java 21 虚拟线程(@EnableVirtualThreads)
问题排查新方式Spring Boot 3.2+ 内置 RequestMapping 映射表端点(/actuator/mappings)

九、一句话总结(面试结束前必说)

“Spring MVC 的本质是:一个 DispatcherServlet + 基于注解的 HandlerMapping/HandlerAdapter + 27 种参数解析器 + 18 种返回值处理器 + 拦截器链 + 异常处理体系,共同构成了目前最成熟、最灵活的 Web 框架。”

把上面内容 + 流程图背熟 + 手写一次请求流程,2025 年 Spring MVC 面试基本无敌!

需要我给你出配套的:

  • 手绘流程图高清版
  • 30 道 Spring MVC 真题 + 标准答案
  • 源码级参数解析器执行顺序图

直接说一声,秒发!冲!

文章已创建 3958

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部