spring-mvc 基础效能之源码debug
众所周知,spring-mvc是一个开源的web框架,以配置建议,容易上手而出名。下面就最简单的一次http请求,来分析spring-mvc是如何处理的。
debug环境准备:参考这位兄台写的文章 http://blog.****.net/hankaibo/article/details/7238556?reload 我建立的是java project ,源码见附件,如果不打算亲自debug ,可忽略这步。
先上大纲:
可以看出,核心就是DispatcherServlet。
我们在DispatcherServlet 的doDispatcher里breakpoint一个。
核心方法就是这2个,简单理解,第一个获取处理的Class ,第二个是再加工一次。
进入getHandler
看一下HanderMapping的继承:
这里的DefaultAnnotationHandlerMapping跟我们配置的xml对应起来了
再看看第二个方法:
继续看一下 HandlerAdapter的继承
如果我们配置了AnnotationMethodHandlerAdapter,这里就会看到。可见这两处就像钩子一样,可以DIY
再看一下handlerAdapters:
里面有3个,我demo的配置文件并没有指定,这里是默认的配置获取到的。
再回到DispatcherServlet里面,上面准备工作都做好了,下面就是真正的处理
本质上:
这里通过了jdk的反射,获取了ModelAndView,然后进行渲染,重定向到我们指定的页面。
通俗总结:
PS: 我用的maven打包,可以导入到eclipse用jetty启动,注意jetty的版本,我的是6.1.26,可以改成别的,可能会下载一些不同的依赖jar包。也可以让tomcat指定到这个目录,通过tomcat启动。