前面的文章分析了springmvc对http请求参数解析绑定到handler的参数的处理,接下来开始分析springmvc对handler的返回值的处理。
首先从this.returnValueHandlers里选择可以处理当前返回值类型的HandlerMethodReturnValueHandler,如果没有找到,抛出异常;找到后调用handler的handleReturnValue()方法进行处理。
在之前分析过的ServletInvocableHandlerMethod里,会调用invokeAndHandle()方法:
如果返回值不为空,就交给returnValueHandlers来处理:
继续看handleReturnValue()方法的处理:
首先从this.returnValueHandlers里选择可以处理当前返回值类型的HandlerMethodReturnValueHandler,如果没有找到,抛出异常;找到后调用handler的handleReturnValue()方法进行处理。
selectHanlder()方法:
springmvc对handler的返回值处理的基本流程就是这样,接下来会对具体的returnValueHandlers进行解析。