在Spring Boot中,一个HTTP请求的处理流程涉及多个组件协同工作,从请求进入到响应返回经历多个关键步骤。以下是详细的处理流程:

  1. 请求到达服务器

    • 客户端(浏览器/APP等)发送HTTP请求到服务器(如Tomcat)
    • 服务器监听指定端口(默认8080),接收请求
  2. 前端控制器(DispatcherServlet)拦截请求

    • 请求首先被 DispatcherServlet接收,它是Spring MVC的核心前端控制器
    • 负责协调后续所有处理流程
  3. HandlerMapping查找处理器

    • DispatcherServlet调用 HandlerMapping查找处理该请求的处理器(Handler)
    • 常见实现:RequestMappingHandlerMapping(处理 @RequestMapping注解)
    • 返回一个 HandlerExecutionChain(包含处理器和拦截器)
  4. HandlerAdapter适配处理器

    • DispatcherServlet根据处理器类型找到合适的 HandlerAdapter
    • 常见实现:RequestMappingHandlerAdapter(处理标注了 @Controller的Bean)
    • 负责调用具体的处理器方法
  5. 执行处理器方法

    • HandlerAdapter调用实际的控制器方法(@Controller中的 @RequestMapping方法)
    • 执行过程中会:
      • 进行参数绑定(@RequestParam@PathVariable等)
      • 数据验证(@Valid@Validated
      • 处理请求数据并执行业务逻辑
  6. 返回ModelAndView

    • 处理器方法执行完成后返回 ModelAndView对象
    • 包含视图名称和模型数据(可选)
  7. 视图解析(ViewResolver)

    • DispatcherServlet调用 ViewResolver将逻辑视图名解析为物理视图
    • 常见实现:InternalResourceViewResolver(解析JSP视图)
  8. 渲染视图

    • 视图对象将模型数据渲染到响应中
    • 生成HTML、JSON等响应内容
  9. 执行拦截器的postHandle和afterCompletion

    • 执行拦截器链中所有拦截器的 postHandle方法(视图渲染前)
    • 执行拦截器链中所有拦截器的 afterCompletion方法(视图渲染后)
  10. 返回响应

    • 将渲染后的响应内容返回给客户端
    • 完成一次请求-响应周期

额外说明:

  • 对于RESTful API(返回JSON/XML),流程会简化,不需要视图解析和渲染步骤
  • 异常处理由 HandlerExceptionResolver处理,可通过 @ExceptionHandler自定义
  • Spring Boot自动配置了大部分组件(如DispatcherServlet、Tomcat等),无需手动配置

这个流程体现了Spring MVC的"前端控制器模式"和"松耦合"设计理念,各组件职责明确,便于扩展和维护。