• 🍃【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方法操作。

    极限就是为了超越而存在的
  • 相关阅读:
    ME05 黑匣子思维
    F06 《生活中的投资学》摘要(完)
    ME03 关于运气要知道的几个真相
    ME02 做一个合格的父母To be good enough parent
    ME02 认知之2017罗胖跨年演讲
    F03 金融学第三定律 风险共担
    F05 敏锐的生活,让跟多公司给你免单
    ML04 Accord 调用实现机器算法的套路
    D02 TED Elon Mulsk The future we're building — and boring
    ML03 利用Accord 进行机器学习的第一个小例子
  • 原文地址:https://www.cnblogs.com/liboware/p/15730162.html
Copyright © 2020-2023  润新知