SpringMVC请求流程
1. 通过请求信息(路径和方法等)通过HandlerMapping从筛选符合条件的HandlerMethod
2. 通过HandlerMethod和HandlerInterceptor构建HandlerChain
3. 通过HandlerMethod获取HandlerAdapter
4, 执行HandlerInterceptor的preHandle方法,如果返回false就执afterCompletion方法
5. 执行HandlerAdapter的handle方法来执行真正的调用
5.1 通过argumentResolvers、returnValueHandlers、parameterNameDiscoverer等构建ServletInvocableHandlerMethod和ModelAndViewContainer
5.2 通过argumentResolvers和parameterNameDiscoverer对HandlerMethod的入参进行处理
5.2 执行ServletInvocableHandlerMethod的invokeAndHandle方法调用真正的处理类HandlerMethod
5.3 通过returnValueHandlers对返回值进行处理,如解析View并设置到ModelAndViewContainer中
5.4 返回ModelAndViewContainer的ModelAndView
6. 执行HandlerInterceptor的postHandle方法
7. 处理相应结果
7.1 如果相应结果里有异常,就通过exceptionResolvers对异常进行处理,并返回ModelAndView
7.2 通过viewResolvers对结果进行呈现
7.3. 最终都会执行HandlerInterceptor的afterCompletion方法