zoukankan      html  css  js  c++  java
  • 🍃【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方法操作。

    极限就是为了超越而存在的
  • 相关阅读:
    struts2简介
    HDU 2842 Chinese Rings(矩阵高速功率+递归)
    Cocos2d-X中国象棋的发展《五岁以下儿童》摆棋
    【Python注意事项】如何理解python中间generator functions和yield表情
    [CSS] Design for Mobile First with Tachyons
    [Angular] Configurable NgModules
    [Angular] Using useExisting provider
    [Angular] Providers and useFactory
    [Angular] Using InjectionToken
    [Angular] Test Directive
  • 原文地址:https://www.cnblogs.com/liboware/p/15730162.html
Copyright © 2011-2022 走看看