承接相關之前的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方法操作。