返回介绍

3.2 参数解析 和 结果转换

发布于 2025-10-03 18:08:55 字数 1614 浏览 0 评论 0 收藏

Spring MVC 中参数到各种类型的转换由 HandlerMethodArgumentResolver 接口完成,而 Controller 返回值到真正的响应的转换由 HandlerMethodReturnValueHandler 接口完成。两者分别负责 Spring MVC 中数据的输入与输出,可用下图表示:

Spring MVC 输入输出转换

HandlerMethodArgumentResolver 接口及其主要实现类如下图:

HandlerMethodArgumentResolver

HandlerMethodReturnValueHandler 接口以及主要实现类如下:

HandlerMethodReturnValueHandler

其实有很多类同时实现了两个接口,比如 RequestResponseBodyMethodProcessor,这样的类一般以 Processor 结尾。

两种转换器的初始化由 HandlerAdapter 完成,这也很好的体现了 HandlerAdapter 接口的功能。以喜闻乐见的 RequestMappingHandlerAdapter 为例,其初始化的 HandlerMethodReturnValueHandler 列表如下:

  • ModelAndViewMethodReturnValueHandler
  • ModelMethodProcessor
  • HttpEntityMethodProcessor
  • HttpHeadersReturnValueHandler
  • CallableMethodReturnValueHandler
  • DeferredResultMethodReturnValueHandler
  • AsyncTaskMethodReturnValueHandler
  • ListenableFutureReturnValueHandler
  • ModelAttributeMethodProcessor
  • RequestResponseBodyMethodProcessor
  • ViewNameMethodReturnValueHandler
  • MapMethodProcessor
  • ModelAndViewResolverMethodReturnValueHandler

从中也可以推测出我们可以把哪些类型的值(对象) 直接"丢给"Spring。

对于 HandlerMethodArgumentResolver 和 HandlerMethodReturnValueHandler 来说,HttpMessageConverter 像是两者手中用来实现功能的武器。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。