05. Spring MVC流程剖析
2021-05-08 13:35:04 3 举报
Spring源码部分关于MVC的初始化和解析
作者其他创作
大纲/内容
// 初始化HandlerAdapter#initHandlerAdapters()
MultipartResolver
⑥ 获得展示视图
Spring MVC初始化完成
HandlerMapping
// 1、检查是否是文件上传请求。 #checkMultipart(request);
层层调用
匹配HandlerAdapter
// MVC初始化核心逻辑#onRefresh()
#initServletBean()
DispatcherServlet
解析View
// 2、取得处理当前请求的Handler,即Controller。 #getHandler(processedRequest);
HttpServletBean
#initWebApplicationContext
// 获取指定Request的handler#getHandler
// 初始化HandlerExceptionResolver#initHandlerExceptionResolvers()
返回Request处理结果
// 初始化MultipartResolver#initMultipartResolver()
请求处理入口
// 完成View的渲染#processDispatchResult()
RequestMappingHandlerAdapter
// 解析文件上传请求#resolveMultipart
ModelAndView
FrameworkServlet
⑦ Web Response
获取请求对应HandlerMapping
// 处理调用参数的解析和核心逻辑的执行#invokeHandlerMethod
// 初始化ThemeResolver#initThemeResolver()
// 请求处理入口方法#doGet()
// 初始化LocaleResolver#initLocaleResolver()
// 初始化RequestToViewNameTranslator#initRequestToViewNameTranslator()
处理文件上传请求
执行Handler处理
九大组件初始化
// 初始化ViewResolver#initViewResolvers()
View
// 根据请求URL,遍历Controller找到对应的Method#getHandlerInternal
// 启动初始化Servlet环境#init()
// 处理请求分发的核心逻辑#doDispatch()
Controller
Spring MVC初始化流程
渲染View
// 3、获取处理请求的HandlerAdapter#getHandlerAdapter(mappedHandler.getHandler());
⑤ 视图解析器
④ Handler处理结果
ViewResolver
// MVC九大组件初始化#initStrategies()
// 4、调用对应Handler处理请求,并返回ModelAndView#ha.handle
Spring MVC调用流程
// 初始化FlashMapManager#initFlashMapManager()
// 找到Request匹配的拦截器链#getHandlerExecutionChain
AbstractHandlerMapping
Spring MVC处理Request请求
① Web Request
③ 请求对应的handler
// 初始化HandlerMapping#initHandlerMappings()
② 获取URL对应Handler
寻找初始化入口
0 条评论
回复 删除
下一页