AI智能
改变未来

🍃【Spring专题】「原理系列」SpringMVC的运行工作原理(补充修订)


承接相关之前的SpringMVC的框架技术的流程分析

初始化流程(initStrategies)

执行流程

寻找相关HandlerMapping

请求到DispatcherServlet类进行执行相关的HandlerMapping集合,找到对应类型的HandlerMapping对象的实现类,如果是一般的采用注解(@RequestMapping)注入的实现类(RequestMappingHandlerMapping)类,

HandlerMapping实现类之RequestMappingHandlerMapping对象

找出Spring容器中被@Controller/@RestController注解修饰的bean以及被@RequestMapping注解修饰的类和方法。

HandlerMapping属性的HandlerMethod对象

HandlerMethod是Method以及Parameter的helper class。在HandlerMapping中被构造,并在HandlerAdapter中被使用。

HandlerExecutionChain对象

当获取到对应的HandlerMapping对象的实现类后,接下来返回到DispatcherServlet类对象,需要构建或者获取相关的HandlerExecutionChain对象,内部包含了很多额外组件,例如:interceptor拦截器。

HandlerAdapter对象

根据HandlerExecutionChain中的Handler,在对应的HandlerAdapter集合找到支持此Handler的HandlerAdapter,调用相关的HandlerMethod对象方法,使用HandlerAdapter得到ModelAndView对象返回到DispatcherServlet。

RequestMappingHandlerAdapter

找到的对应的RequestMapping的HandlerAdapter对象的实现类RequestMappingHandlerAdapter对象操作处理。

HandlerInterceptor拦截器
  • 前置拦截器:HandlerInterceptor-preHandle
  • 后置拦截器:HandlerInterceptor-postHandle
HandlerExceptionResolver异常处理

上面的操作处理方式可能会发生异常,使用HandlerExceptionResolver策略解决。

RequestMappingHandlerAdapter的处理操作

  • HandlerMethodArgumentResolverComposite:该对象处理和包含了内部多个HandlerMethodArgumentResolver集合。HandlerMethodArgumentResolver:解析相关的方法入口参数的解析机制!
  • HandlerMethodReturnValueHandlerComposite:该对象处理和包含了内部多个的HandlerMethodReturnValueHandler集合。
      HandlerMethodReturnValueHandler:该对象处理和操作方法的返回值

    HandlerMethodArgumentResolver参数入口的解析器

    RequestParamMethodArgumentResolver

    处理@RequestParam注解修饰的参数:HandlerMethodArgumentResolver的实现类之一:RequestParamMethodArgumentResolver

    RequestResponseBodyMethodProcessor

    处理@RequestBody注解修饰的参数:HandlerMethodArgumentResolver的实现类

    HandlerMethodReturnValueHandler参数返回操作解析器

    RequestResponseBodyMethodProcessor

    处理@ResponseBody注解修饰的返回值:HandlerMethodReturnValueHandler的实现类

    ModelAndViewMethodReturnValueHandler

    处理返回值类型为ModelAndView对象返回值:HandlerMethodReturnValueHandler的实现类

    ViewResolver视图解析器

    将ModelAndView的对象数据与数据页面模板进行解析处理操作ViewResolver对象,生成相关的View对象。并且返回相关的response:freemarker, jsp. json, xml等。

    HandlerInterceptor的收官处理

    最终完成拦截器:afterCompletion方法操作。

  • 赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » 🍃【Spring专题】「原理系列」SpringMVC的运行工作原理(补充修订)