国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > php教程 > springMVC源码分析--HandlerMethodReturnValueHandler返回值解析器(一)

springMVC源码分析--HandlerMethodReturnValueHandler返回值解析器(一)

来源:程序员人生   发布时间:2017-01-13 11:11:52 阅读次数:2939次

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,
			ModelAndViewContainer mavContainer, Object... providedArgs) throws Exception {
		//处理操作的返回值
		Object returnValue = invokeForRequest(webRequest, mavContainer, providedArgs);
		.......
		//对返回值进行处理操作
		this.returnValueHandlers.handleReturnValue(
					returnValue, getReturnValueType(returnValue), mavContainer, webRequest);
		.........
	}

具体实现是在HandlerMethodReturnValueHandlerComposite中,HandlerMethodReturnValueHandlerComposite中包括了所有springMVC提供的返回值处理器。

@Override
	public void handleReturnValue(Object returnValue, MethodParameter returnType,
			ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception {
		//选择可以处理返回值的处理器
		HandlerMe     
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生