springMVC源码分析--HandlerMethodReturnValueHandler返回值解析
发布时间:2020-12-13 21:18:36 所属栏目:PHP教程 来源:网络整理
导读:HandlerMethodReturnValueHandler是用于对Controller中函数履行的返回值进行处理操作的,springMVC提供了多个HandlerMethodReturnValueHandler的实现类。 接口HandlerMethodReturnValueHandler定义的抽象方法还是比较简单的,源码以下: (1)supportsReturn
HandlerMethodReturnValueHandler是用于对Controller中函数履行的返回值进行处理操作的,springMVC提供了多个HandlerMethodReturnValueHandler的实现类。 接口HandlerMethodReturnValueHandler定义的抽象方法还是比较简单的,源码以下: (1)supportsReturnType用于判断是不是支持对返回值的处理。 (2)handleReturnValue实现对返回值的处理操作。 public interface HandlerMethodReturnValueHandler { //判断是不是支持 boolean supportsReturnType(MethodParameter returnType); //处理返回值操作 void handleReturnValue(Object returnValue,MethodParameter returnType,ModelAndViewContainer mavContainer,NativeWebRequest webRequest) throws Exception; } springMVC中对返回值的操作流程以下:履行进程是在ServletInvocableHandlerMethod的invokeAndHandle中 public void invokeAndHandle(ServletWebRequest webRequest,Object... providedArgs) throws Exception { //处理操作的返回值 Object returnValue = invokeForRequest(webRequest,mavContainer,providedArgs); ....... //对返回值进行处理操作 this.returnValueHandlers.handleReturnValue( returnValue,getReturnValueType(returnValue),webRequest); ......... } 具体实现是在HandlerMethodReturnValueHandlerComposite中,HandlerMethodReturnValueHandlerComposite中包括了所有springMVC提供的返回值处理器。 @Override public void handleReturnValue(Object returnValue,NativeWebRequest webRequest) throws Exception { //选择可以处理返回值的处理器 HandlerMe |