1.MVC分层介绍一下

“Spring MVC 采用经典的三层架构,通过 Controller(控制层) 接收请求,调用 Service(业务逻辑层) 进行逻辑处理,最后由 Repository/DAO(持久层) 与数据库交互。这种设计实现了请求处理、业务逻辑和数据访问的彻底解耦。”

2.了解SpringMVC的处理流程吗?

“Spring MVC 的核心是一个中央调度器 DispatcherServlet,它的执行流程可以概括为:

  1. 请求分发:请求到达 DispatcherServlet 后,它会通过 HandlerMapping 找到处理该请求的具体方法(Handler)。

  2. 适配执行:通过 HandlerAdapter 调用该方法,执行业务逻辑并获取结果。

  3. 结果处理:如果是前后端分离(Restful),直接通过 HttpMessageConverter 将对象转为 JSON 返回;如果是传统开发,则由 ViewResolver 解析逻辑视图名并渲染返回。”

2. 关键组件的功能(应对追问)

如果面试官问具体组件的作用,一句话总结:

  • DispatcherServlet:中央控制枢纽,解耦各个组件。

  • HandlerMapping:负责“找人”,建立 URL 和 Controller 的映射。

  • HandlerAdapter:负责“干活”,支持多种格式的 Controller 运行(适配器模式)。

  • HttpMessageConverter:负责“转码”,把 Java 对象和 JSON/XML 互转。

3. 与过滤器的区别(避坑指南)

“过滤器(Filter)是 Servlet 层的,负责全局请求过滤(如跨域、字符集); 拦截器(Interceptor)是 Spring MVC 层的,它能获取到具体的 Handler 信息,更适合做权限校验和业务日志。”

4.Handlermapping 和 handleradapter有了解吗?

1. HandlerMapping(处理器映射器)—— “找人的”

  • 一句话定义:它负责根据用户请求的 URL 找到对应的 Handler(通常就是我们写的 Controller 方法)。

  • 核心逻辑:Spring 启动时,它会扫描所有 @RequestMapping 注解,建立 URL 与方法的映射表

  • 面试话术

    “HandlerMapping 就像一个导航仪。当请求进来时,DispatcherServlet 问它:‘这个 URL 归谁管?’,它就会返回一个执行链(包含 Controller 方法和拦截器 Interceptor)。”

2. HandlerAdapter(处理器适配器)—— “干活的”

  • 一句话定义:它负责真正去 调用/执行 找到的那个 Handler。

  • 设计模式:使用了 适配器模式

  • 核心逻辑:因为 Controller 的写法有很多种(注解式、实现接口式、甚至原生的 Servlet),DispatcherServlet 不知道怎么直接调用它们,必须通过适配器来转换。

  • 面试话术

    “HandlerAdapter 就像一个万能转换插头。由于 Handler 的类型多样,DispatcherServlet 不需要关心具体的调用细节,只需统一调用适配器的 handle 方法,由适配器去处理参数转换和方法反射调用。”