可参照http://blog.csdn.net/ljhabc1982/article/details/18405155
SpringMVC工作流程:
1.客户端发送请求,web容器接受请求,如果请求与DispatcherServlet的请求映射路径(url-pattern)匹配,web容器将请求交给DispatcherServlet处理。
2.DispatcherServlet在加载的过程中会对HandlerMapping进行初始化,(具体可参照SpringMVC源码中DispatherServlet类的initHandlerMappings(ApplicationContext context)方法)。
DispatcherServlet初始化完成后会自动扫描applicationContext.xml中的bean,根据名称(也就是bean的id或者类型来查找,如果找到则使用这个bean,找不到则使用DispatcherServlet.properties中的默认组件,DispathcerServlet.properties提供了两个HandlerMapping
#处理器映射器 (2个)
org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
)
DispatcherServlet内部逻辑
DispatcherServlet通过initStrategies方法装配springmvc组件
protected voidinitStrategies(ApplicationContext context) {
initMultipartResolver(context);//初始化文件上传解析器
initLocaleResolver(context);//初始化本地解析器
initThemeResolver(context);//初始化主题解析器
initHandlerMappings(context);//初始化处理器映射器
initHandlerAdapters(context);//初始化处理器适配器
initHandlerExceptionResolvers(context);//初始化异常解析器
initRequestToViewNameTranslator(context);//初始化请求到视图名称解析器
initViewResolvers(context);//初始化视图解析器
initFlashMapManager(context);
}