springmvc对handler的返回值处理_晏无心_新浪博客

本文深入探讨了SpringMVC中对Handler方法返回值的处理机制,从ServletInvocableHandlerMethod的invokeAndHandle()方法开始,分析了如何处理非空返回值以及returnValueHandlers的作用。在RequestMappingHandlerAdapter初始化时配置了returnValueHandlers,并通过selectHandler()方法选择合适的HandlerMethodReturnValueHandler进行处理,如果找不到合适处理器则抛出异常。文章后续将解析具体的returnValueHandlers实现。
摘要由CSDN通过智能技术生成
前面的文章分析了springmvc对http请求参数解析绑定到handler的参数的处理,接下来开始分析springmvc对handler的返回值的处理。

在之前分析过的ServletInvocableHandlerMethod里,会调用invokeAndHandle()方法:
springmvc对handler的返回值处理
在这里通过,这里会直接返回null。否则如果handler没有做处理直接返回null,接下来处理会报出异常。
springmvc对handler的返回值处理
springmvc对handler的返回值处理

如果返回值不为空,就交给returnValueHandlers来处理:
springmvc对handler的返回值处理
this.returnValueHandlers的赋值在RequestMappingHandlerAdapter初始化时进行,如果不进行配置,会读取默认的配置:
springmvc对handler的返回值处理

继续看handleReturnValue()方法的处理:
springmvc对handler的返回值处理
首先从this.returnValueHandlers里选择可以处理当前返回值类型的HandlerMethodReturnValueHandler,如果没有找到,抛出异常;找到后调用handler的handleReturnValue()方法进行处理。
selectHanlder()方法:
springmvc对handler的返回值处理
通过handler的supportsReturnType()方法来判断是否支持当前返回值类型的处理。

springmvc对handler的返回值处理的基本流程就是这样,接下来会对具体的returnValueHandlers进行解析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值