Loading

04Spring MVC时序图分析

SpringMVC请求流程图:

 

 

 

SpringMVC源码时序图

MVC初始化部分:

org.springframework.web.servlet.HttpServletBean#init

org.springframework.web.servlet.FrameworkServlet#initWebApplicationContext


org.springframework.web.servlet.FrameworkServlet#configureAndRefreshWebApplicationContext

org.springframework.context.support.AbstractApplicationContext#refresh

回调:
org.springframework.web.servlet.DispatcherServlet#onRefresh


MVC执行部分:

org.springframework.web.servlet.DispatcherServlet#doService

 

org.springframework.web.servlet.DispatcherServlet#doDispatch

获取handlerChain:
org.springframework.web.servlet.DispatcherServlet#getHandler

获取adapter:
org.springframework.web.servlet.DispatcherServlet#getHandlerAdapter


执行:
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter#handle
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#invokeHandlerMethod

执行完成后返回mv:
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#getModelAndView


处理mv:
org.springframework.web.servlet.DispatcherServlet#processDispatchResult
org.springframework.web.servlet.DispatcherServlet#render

输出数据到浏览器:
org.springframework.web.servlet.view.AbstractView#render

 


SpringMVC使用建议:
1、Controller如果能保持单例,尽量使用单例!
2、处理Request的方法中的形参务必加上@RequestParam注解!提升解析参数效率!直接对号入座!
3、缓存URL!Spring没有对url进行缓存,每次请求进来都要根据url去匹配Method!

posted @ 2020-09-20 17:07  yanbubao  阅读(202)  评论(0编辑  收藏  举报