- 前言:SpringMVC通過前端控制器DispatcherServlet的doDispach()方法進行請求處理。其中沃测,我們通過HandlerAdapter的handle方法將請求交給合適的handler處理范咨,此外舞终,執(zhí)行一些參數(shù)解析、返回值處理工作氮双。
</br>- 步驟1:AbstractHandlerMethodAdapter的handle方法將參數(shù)解析效诅、handler調用胀滚、返回值處理交由其子類RequestMappingHandlerAdapter的invokeHandleMethod方法趟济,后者調用ServletInvocableHandlerMethod的invokeAndHandle方法
- 步驟2:ServletInvocableHandlerMethod繼承于InvocableHandlerMethod,ServletInvocableHandlerMethod的invokeAndHandle方法咽笼,(2.1)調用其繼承于父類的invokeForRequest方法進行參數(shù)解析顷编、handler處理器調用;(2.2)通過其成員變量returnValueHandlers方便調用HandlerMethodReturnValueHandler接口handleReturnValue抽象方法的實現(xiàn)進行返回值處理褐荷。
- 步驟2.1:InvocableHandlerMethod類的invokeForRequest方法調用其本類的getMethodArgumentValues方法進行參數(shù)解析勾效,利用成員變量argumentResolvers調用方法參數(shù)解析器,通過SupportsParameter方法叛甫,選擇合適的解析器,通過解析器的resolveArgument方法調用readWithMessageConverters方法進行參數(shù)解析杨伙,解析的參數(shù)供處理器方法使用其监,通過doInvoke方法調用處理器方法。
- 步驟2.2:通過ServletInvocableHandlerMethod類成員變量returnValueHandlers來方便調用返回值處理器限匣,通過HandlerMethodReturnValueHandler接口supportsReturnType方法選擇合適的返回值處理器抖苦、handleReturnValue方法進行返回值處理。handleReturnValue方法調用WriteWithMessageConverters方法米死,利用消息轉換器的canWrite锌历、Write方法完成返回值處理過程。