
从端口监听开始
server.port=8080 背后,嵌入式 Tomcat 在 NIO 线程上 accept 连接。Spring Boot 3.x 默认 Tomcat 10(Jakarta EE 命名空间 jakarta.*)。
请求进入后,不会直达你的 @RestController,而是先穿过 Filter 链。

关键组件
- Filter:Servlet 规范层,Spring Security、CORS、Tracing 常在此。
- DispatcherServlet:Spring MVC 前端控制器,找 Handler。
- HandlerMapping:URL → Controller 方法。
- HandlerAdapter:执行方法、解析参数(
@RequestBody、@PathVariable)。 - HttpMessageConverter:JSON ↔ Java 对象。
- ControllerAdvice:全局异常 → 统一 JSON。
过滤器链与安全
Spring Security 本质是 一组 Ordered Filter。典型顺序概念:
- SecurityContextPersistenceFilter
- UsernamePasswordAuthenticationFilter / OAuth2 / JWT Filter(自定义)
- AuthorizationFilter

排查 401/403 时,先确认:哪一层 Filter 拒绝(日志 + security.debug=true 仅 dev)。
与响应相关的坑
| 现象 | 可能环节 |
|---|---|
| JSON 少字段 | Jackson 配置 / DTO 注解 |
| 双斜杠 404 | server.servlet.context-path |
| CORS 预检失败 | CorsFilter 顺序或 Security 未 permit OPTIONS |
| 事务未提交 | Service 未被代理(同类自调用) |
异步与 WebFlux(了解边界)
Servlet 栈(Spring MVC)用线程池 一请求一线程;WebFlux 用事件循环,适合 IO 密集但迁移成本高。多数 CRUD 业务 MVC + 合理线程池 足够。
小结
记住链路:Tomcat → Filter → DispatcherServlet → Controller → Service → DB → 原路返回。出问题时按层二分,比「全局 grep」快得多。
参考:Spring Framework Servlet 文档 · 作者排查笔记。