Spring mvc启动、请求处理过程源码分析

1月 31, 2018 |

本文由javacoder.cn整理,转载注明处理

spring mvc 最重要的几个组件如下:
DispatcherServlet:前端控制器, 根据请求url不同将请求路由给不同的Controller处理
HandlerMapping 根据url匹配合适的handler
HandlerAdapter handler有多种实现方式,比如基于annotation, 静态资源实现HttpRequestHandler的handler
ViewResolver 根据controler返回的逻辑view名称匹配合适的view

类图如下

spring mvc对各个组件实现了自动注册,比如context xml配置如下

没有任何关于spring mvc这三大组件的配置,请求也能路由到controller中取, 这是因为在spring-webmvc-*.jar的DispatchServlet.properties文件中指定了各个组件的默认值,当spring构建上下文时发现没有这些组件。就会根据DispatchServlet.properties中的默认值进行注册相应的组件。
序列图如下

如果我们修改context xml文件, 添加<mvc:annotation-driven/>注解, 那么spring 启动时会调用AnnotationDrivenBeanDefinitionParser.parse解析<mvc:annotation-driven/>注解,然后为我们注册HandlerMapping, HandlerAdapter,ViewResolver 这三大组件。

序列图如下(图比较大,请在新的窗口中查看原图):

Posted in: spring practise

Comments are closed.