RequestMappingHandlerAdapter消息转换机制


RequestMappingHandlerAdapter消息转换机制

  • 前言:SpringMVC通过前端控制器DispatcherServlet的doDispach()方法进行请求处理。其中,我们通过HandlerAdapter的handle方法将请求交给合适的handler处理,此外,执行一些参数解析、返回值处理工作。

    </br>
  • 步骤1:AbstractHandlerMethodAdapter的handle方法将参数解析、handler调用、返回值处理交由其子类RequestMappingHandlerAdapter的invokeHandleMethod方法,后者调用ServletInvocableHandlerMethod的invokeAndHandle方法
  • 步骤2:ServletInvocableHandlerMethod继承于InvocableHandlerMethod,ServletInvocableHandlerMethod的invokeAndHandle方法,(2.1)调用其继承于父类的invokeForRequest方法进行参数解析、handler处理器调用;(2.2)通过其成员变量returnValueHandlers方便调用HandlerMethodReturnValueHandler接口handleReturnValue抽象方法的实现进行返回值处理。
  • 步骤2.1:InvocableHandlerMethod类的invokeForRequest方法调用其本类的getMethodArgumentValues方法进行参数解析,利用成员变量argumentResolvers调用方法参数解析器,通过SupportsParameter方法,选择合适的解析器,通过解析器的resolveArgument方法调用readWithMessageConverters方法进行参数解析,解析的参数供处理器方法使用,通过doInvoke方法调用处理器方法。
  • 步骤2.2:通过ServletInvocableHandlerMethod类成员变量returnValueHandlers来方便调用返回值处理器,通过HandlerMethodReturnValueHandler接口supportsReturnType方法选择合适的返回值处理器、handleReturnValue方法进行返回值处理。handleReturnValue方法调用WriteWithMessageConverters方法,利用消息转换器的canWrite、Write方法完成返回值处理过程。

消息转换工作交由Spring MVC执行,开发者只要通过一些xml配置、注解,就可以实现想要的消息数据类型,大大减少了开发者的工作。但任何技术都不会是完美的,把消息转换工作交给Spring MVC,我们就要知道它是怎么做的、为什么这么做,这样用的过程中遇到了坑,我们也就有办法解决。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,850评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,995评论 25 709
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,499评论 18 399
  • 儿时你望走遍雪月飞花, 盼守蔚象蒸霞。 长大后,你口叼雪茄, 笑讽儿时戏话。 骤惊醒,后怕。 看几前,书画仍在,青...
    维扬卡的馅饼阅读 1,531评论 0 1
  • 生活简单化,健康简单化,教育简单化 啥子拍打 拍头跺脚喝稀粥 健康每一天
    一朵天边的云阅读 3,587评论 0 0

友情链接更多精彩内容