Spring Boot 一个请求的执行流程
2026-06-24
NEW个对象
📌 Spring Boot 一个请求的执行流程
Spring Boot 一个 HTTP 请求从客户端发送到最终返回响应,会依次经过 Tomcat、Filter、DispatcherServlet、HandlerMapping、Interceptor、Controller、Service、DAO、数据库等多个组件,最终再经过视图或 JSON 序列化返回客户端。
🚀 请求执行流程
浏览器 / APP
│
▼
Embedded Tomcat 接收请求
│
▼
Filter(过滤器)
│
▼
DispatcherServlet(SpringMVC核心)
│
▼
HandlerMapping(查找Controller)
│
▼
Interceptor.preHandle()
│
▼
HandlerAdapter
│
▼
Controller
│
▼
Service(业务层)
│
▼
Mapper / Repository
│
▼
MyBatis / JPA
│
▼
MySQL
│
▼
返回数据
│
▼
Interceptor.postHandle()
│
▼
HttpMessageConverter(JSON转换)
│
▼
Interceptor.afterCompletion()
│
▼
Filter 返回响应
│
▼
浏览器收到响应
🎯 各组件作用
| 组件 | 作用 |
|---|---|
| Tomcat | 接收 HTTP 请求并交给 SpringMVC |
| Filter | 过滤请求,如日志、编码、权限、TraceId |
| DispatcherServlet | SpringMVC 前端控制器,负责统一调度 |
| HandlerMapping | 根据 URL 找到对应 Controller |
| Interceptor | 登录校验、权限、日志等处理 |
| Controller | 接收请求参数,调用业务层 |
| Service | 处理业务逻辑 |
| Mapper | 访问数据库 |
| HttpMessageConverter | 将对象转换为 JSON/XML 返回客户端 |
💡 Interceptor 执行顺序
preHandle()
↓
Controller
↓
postHandle()
↓
视图渲染 / JSON转换
↓
afterCompletion()
⚠️ Filter 与 Interceptor 区别
- Filter 属于 Servlet 规范,在进入 SpringMVC 之前执行。
- Interceptor 属于 SpringMVC,只能拦截 Controller 请求。
- Filter 更适合做字符编码、跨域、TraceId、日志等通用处理。
- Interceptor 更适合做登录校验、权限控制、接口鉴权等业务相关逻辑。
✅ 面试总结
Spring Boot 一个请求的核心流程可以概括为:
Tomcat → Filter → DispatcherServlet → HandlerMapping → Interceptor → Controller → Service → Mapper → MySQL → HttpMessageConverter → 返回客户端。
其中 DispatcherServlet 是 SpringMVC 的核心调度器,负责请求分发;Filter 负责 Servlet 层通用处理;Interceptor 负责 SpringMVC 层业务拦截;HttpMessageConverter 负责对象与 JSON 的相互转换,是整个请求链路的关键组件。
Spring Boot 一个请求的核心流程可以概括为:
Tomcat → Filter → DispatcherServlet → HandlerMapping → Interceptor → Controller → Service → Mapper → MySQL → HttpMessageConverter → 返回客户端。
其中 DispatcherServlet 是 SpringMVC 的核心调度器,负责请求分发;Filter 负责 Servlet 层通用处理;Interceptor 负责 SpringMVC 层业务拦截;HttpMessageConverter 负责对象与 JSON 的相互转换,是整个请求链路的关键组件。
相关文章
-
kafka消费者组是什么?
kafka消费者组是什么?
NEW个对象 2024-10-24
-
dubbo支持多种协议:
dubbo支持多种协议:
NEW个对象 2025-02-26
-
工厂模式与抽象工厂模式的区别?
工厂模式:产品接口,具体的产品,工厂 抽象工厂模式:产品接口,具体的产品,工厂接口,具体的工厂。
NEW个对象 2025-01-11
NEW个对象
JAVA是世界上最好的语言