读书人

spring-mvc 基础效能之源码debug

发布时间: 2013-10-16 11:29:46 作者: rapoo

spring-mvc 基础功能之源码debug

可以看出,核心就是DispatcherServlet。

我们在DispatcherServlet 的doDispatcher里breakpoint一个。


spring-mvc 基础效能之源码debug
?核心方法就是这2个,简单理解,第一个获取处理的Class ,第二个是再加工一次。

进入getHandler


spring-mvc 基础效能之源码debug
?看一下HanderMapping的继承:


spring-mvc 基础效能之源码debug
?

这里的DefaultAnnotationHandlerMapping跟我们配置的xml对应起来了

再看看第二个方法:


spring-mvc 基础效能之源码debug
继续看一下 HandlerAdapter的继承
spring-mvc 基础效能之源码debug

如果我们配置了AnnotationMethodHandlerAdapter,这里就会看到。可见这两处就像钩子一样,可以DIY
?再看一下handlerAdapters:


spring-mvc 基础效能之源码debug
?里面有3个,我demo的配置文件并没有指定,这里是默认的配置获取到的。

再回到DispatcherServlet里面,上面准备工作都做好了,下面就是真正的处理
spring-mvc 基础效能之源码debug
?

本质上:
spring-mvc 基础效能之源码debug
这里通过了jdk的反射,获取了ModelAndView,然后进行渲染,重定向到我们指定的页面。
spring-mvc 基础效能之源码debug
?

通俗总结:

在web.xml中配置了filter,因此所有request都会经过filter,即springDispatcher。然后从map中获取此次请求的requestUrl对应的处理类Action,这样,就得到了处理类Class,再加上处理方法method,利用Java反射调用得到结果,再重定向。

?PS: 我用的maven打包,可以导入到eclipse用jetty启动,注意jetty的版本,我的是6.1.26,可以改成别的,可能会下载一些不同的依赖jar包。也可以让tomcat指定到这个目录,通过tomcat启动。

读书人网 >VC/MFC

热点推荐