springMVC阅读源码素材
1、开始debug的时候,对HttpMethod感到好奇,点进去查看一下HttpMethod究竟是何物?
HttpMethod 是请求方法的枚举类,结合咱浏览器地址栏的参数是直接输入,可以知道咱的HttpMethod的值是Get
果然咱的HttpMethod的值是Get,所以下一步会执行super.service(request, response);
ctr进入该方法看一下,究竟是何物,发现按ctr没有反应,那咱就按调试的F5进入吧【解决:重新打开一边该类的文件】
进入super.service(request, response);内部一探究竟:
发现这个service方法做的是请求分发操作,结合咱的请求方法是GET,所以下一步咱是到doGet去一探究竟~
再进入processRequest方法~
进入发现重点是doService(request, response);那咱就进入该方法内部一探究竟吧~
进入发现重点是doDispatch(request, response);那咱就进入该方法内部一探究竟吧~
2、真正的springMVC执行流程的源码分析,才真正开始~
因为处理器映射器返回处理器执行链对象是在咱的执行流程-“主干路线上”,咱应该进入这个返回获取到处理器执行链对象getHandler(processedRequest);方法里。
进入获取处理器执行链方法内部,发现了处理器映射器,通过观察调试变量Variables的值,发现处理器映射器 handlerMappings 的值正是咱配置的BeanNameUrlHandlerMapping。
还发现是调用适配器的getHandler方法 返回HandlerExecutionChain 处理器执行链对象----是springMVC 执行流程的-"主干路线",进入该getHandler方法进行观察一下
- 进入AbstractUrlHandlerMapping的getHandlerInternal(HttpServletRequest request)发现:----lookupHandler是springMVC 执行流程的-"主干路线"的查找匹配的处理器。进入该lookupHandler方法进行观察一下~
- 进入该lookupHandler方法发现:是通过路径去选择匹配的处理器----SpringMVC的执行流程的"主干路线",到这里就很清晰的得到SpringMVC执行流程的如下过程:
✿ 到此得到SpringMVC执行流程的如下过程:客户端发送请求,请求被前端控制器接收后,前端控制器---通过处理器映射器去寻找处理器【根据路径进行配置 】-----然后返回一个处理器执行链对象.
- HandlerExecutionChain handler =
mapping.getHandler(request)
; - Object handler =
this.handlerMap.get(urlPath);
- Object handler =
lookupHandler(lookupPath, request)
; HandlerExecutionChain
★ 在执行过程中,通过调试变量Variables的值,发现处理器映射器 handlerMappings 的值正是咱配置的BeanNameUrlHandlerMapping.
★ 在执行过程中,通过选中等编译器显示的方式,咱发现urlPath路径正是咱配置的/hello.
- SpringMVC源码阅读入门
- SpringMVC源码阅读:定位Controller
- SpringMVC源码阅读(二)
- SpringMVC源码阅读:拦截器
- SpringMVC核心控制器DispatcherServlet类结构源码阅读
- SpringMVC源码阅读系列
- Spring源码阅读(八)—SpringMVC基础Servlet
- Spring源码阅读(九)—SpringMVC的初始化
- SpringMVC源码阅读:Json,Xml自动转换
- SpringMVC深度探险(1,2,3,4)Spring源码阅读:Spring MVC 初始化 - 螺 丝 钉 / DispatcherServlet的初始化主线
- springmvc源码阅读笔记 --HandlerMapping
- springmvc源码阅读笔记 --Object handler和request请求路径查询lookupPath
- Spring MVC的创建过程(SpringMVC源码阅读系列之一)
- SpringMVC源码阅读:异常解析器
- springmvc源码阅读笔记 --HandlerInterceptor
- SpringMVC源码阅读(三)
- springmvc源码阅读笔记 --HandlerAdatper
- SpringMVC源码阅读笔记-DispatcherServlet
- SpringMVC启动与初始化源码阅读
- SpringMVC源码阅读:Controller中参数解析