zoukankan      html  css  js  c++  java
  • @ResponseBody注解的作用

    @ResponseBody的作用就是将返回的对象通过MessageConverter处理之后,写入response的outputStream中返回。大致流程如下

    1.在DispatcherServlet中调用doDispatch方法,该方法中有如下代码。这里的ha为RequestMappingHandlerAdapter,这个对象怎么来的,简单点说就是通过request的请求路径匹配到执行器链,通过执行器链中的处理器匹配到对应的适配器,暂时不做深入讨论。

      

     2.handle方法会走到RequestMappingHandlerAdapter的handleInternal中

    3.调用invokeHandlerMethod方法

    4.查看invokeAndHandle方法,这里就到了本文的重点了

     

    5.查看handleReturnValue

    6.查看selectHandler

    7.这里遍历预置的处理器是否支持返回值的类型。这里的returnValueHanlers比较多,有15个。对应@ResponseBody注解的为RequestResponseBodyMethodProcessor。直接看该对象的supportsReturnType方法。

     8.匹配到RequestResponseBodyMethodProcessor之后就执行该第5步中该对象的handleReturnValue

    到此,@ResponseBody注解的作用就讲完了。

    顺带一提,配置了视图解析器之后,通常情况下为ViewNameMethodReturnValueHandler这个类来处理视图。

    这里是15个returnValueHandler的截图

    总结:简单的讲,@ResponseBody注解就是为了RequestResponseBodyMethodProcessor处理返回值提供标识。

    如有不对之处望指教。

  • 相关阅读:
    kaggle编码categorical feature总结
    sklearn---DBSCAN
    Panda to Panda.Dataframe?
    pandas的分组取最大多行并求和函数nlargest()
    26.异常检测---孤立森林 | one-class SVM
    PowerShell----Automatic_Variables(预定义变量)
    powershell---高级函数的介绍
    PowerShell中的配置文件
    PowerShell如何使用自定义公共函数
    探索PowerShell----函数
  • 原文地址:https://www.cnblogs.com/guyaoblog/p/11382057.html
Copyright © 2011-2022 走看看