承接相關之前的SpringMVC的框架技術的流程分析
初始化流程(initStrategies)
執行流程
尋找相關HandlerMapping
請求到DispatcherServlet類進行執行相關的HandlerMapping集合,找到對應類型的HandlerMapping對象的實現類,如果是一般的採用註解(@RequestMapping)注入的實現類(RequestMappingHandlerMapping)類,
HandlerMapping實現類之RequestMappingHandlerMapping對象
找出Spring容器中被@Controller/@RestController註解修飾的bean以及被@RequestMapping註解修飾的類和方法。
HandlerMapping屬性的HandlerMethod對象
HandlerMethod是Method以及Parameter的helper class。在HandlerMapping中被構造,
並在HandlerAdapter中被使用。
HandlerExecutionChain對象
當獲取到對應的HandlerMapping對象的實現類後,接下來返回到DispatcherServlet類對象,需要構建或者獲取相關的HandlerExecutionChain對象,內部包含了很多額外組件,例如:interceptor攔截器。
HandlerAdapter對象
根據HandlerExecutionChain中的Handler,在對應的HandlerAdapter集合找到支持此Handler的HandlerAdapter,調用相關的HandlerMethod對象方法,使用HandlerAdapter得到ModelAndView對象返回到DispatcherServlet。
RequestMappingHandlerAdapter
找到的對應的RequestMapping的HandlerAdapter對象的實現類RequestMappingHandlerAdapter對象操作處理。
HandlerInterceptor攔截器
- 前置攔截器:HandlerInterceptor-preHandle
- 後置攔截器:HandlerInterceptor-postHandle
HandlerExceptionResolver異常處理
上面的操作處理方式可能會發生異常,使用HandlerExceptionResolver策略解決。
RequestMappingHandlerAdapter的處理操作
- HandlerMethodArgumentResolverComposite:該對象處理和包含了內部多個HandlerMethodArgumentResolver集合。
- HandlerMethodArgumentResolver:解析相關的方法入口參數的解析機制!
- HandlerMethodReturnValueHandlerComposite:該對象處理和包含了內部多個的HandlerMethodReturnValueHandler集合。
- HandlerMethodReturnValueHandler:該對象處理和操作方法的返回值
HandlerMethodArgumentResolver參數入口的解析器
RequestParamMethodArgumentResolver
處理@RequestParam註解修飾的參數:HandlerMethodArgumentResolver的實現類之一:RequestParamMethodArgumentResolver。
RequestResponseBodyMethodProcessor
處理@RequestBody註解修飾的參數:HandlerMethodArgumentResolver的實現類
HandlerMethodReturnValueHandler參數返回操作解析器
RequestResponseBodyMethodProcessor
處理@ResponseBody註解修飾的返回值:HandlerMethodReturnValueHandler的實現類
ModelAndViewMethodReturnValueHandler
處理返回值類型爲ModelAndView對象返回值:HandlerMethodReturnValueHandler的實現類
ViewResolver視圖解析器
將ModelAndView的對象數據與數據頁面模板進行解析處理操作ViewResolver對象,生成相關的View對象。並且返回相關的response:freemarker, jsp. json, xml等。
HandlerInterceptor的收官處理
最終完成攔截器:afterCompletion方法操作。