前提提要:spring-web 提供了核心 HTTP 集成,包括一些便捷的 servlet 过滤器, Spring HTTP 调用,用于集成其它 web 框架的基础结构以及技术(Hessian,Burlap)。

spring-webmvc 是 Spring MVC 的一个实现。spriing-webmvc 依赖于 spring-web,这样包含它就会间接地添加 spring-web。不必显示添加 spring-web。

如果你不使用 Spring MVC ,但想要借助其它 Spring 支持的 web 相关技术的优势,那么你只需依赖 spring-web 。

 

 spring mvc实现原理源码相关解读

spring mvc相关启动核心最开始的方法,由进入ioc容器加载操作,tomcat在启动时会扫描所有项目META-INF/services/javax.servlet.ServletContainerInitializer这个文件(spi机制实现,关于spi请看我的另一篇博客),然后执行相关的实现类中的onStartup方法,之后将会调用

 spring mvc实现原理源码相关解读

之后会进入到这个类的相关方法进行操作,实现对于用户配置类的注册,

 

spring mvc实现原理源码相关解读

 

spring mvc实现原理源码相关解读

 

 至此spring mvc入口加载操作完成。

spring mvc实现原理源码相关解读

 

 spring mvc实现原理源码相关解读

 

以上操作完成之后tomcat运行相关StandardContext中listener方法对于之前加载listener类进行对应的相关操作,实现对于spring ioc容器的加载操作。之后将会进行常规的refresh方法操作,对于beandefinition进行解析并创建的对应实例对象然后放到ioc容器,完成所有的spring mvc与spring mvc的执行流程操作。

 

------------------------------以上完成了spring mvc与spring 结合流程,

 

以上为spring mvc经典的运行流程图,下面所有的都是对于上面步骤进行相关的详细解析。 

spring mvc实现原理源码相关解读

注意这里,是直接通过tomcat中的listener相关fireContainerEvent方法调用到此方法,用于实现对于spring ioc容器的创建操作,这里的容器类型为AnnotaionConfigWebApplicationContext,下面spring mvc相关的ioc子容器也是此类型的

spring mvc实现原理源码相关解读

 

之前的ioc容器创建完成之后,tomcat会通过调用servlet api,执行这里的init方法实现对于spring mvc ioc子容器的创建操作。而这里的HttpservletBean中的init方法又是通过

抽象类GenericServlet中的init方法进化而来,多态的使用的,而最终都是通过
DispatcherServlet这个实例化对象中的相关操作实现的,而这里对象在什么时候实例化的呢?

spring mvc实现原理源码相关解读

 

 在xml中我们可能有如何操作实现的对于对象实例的实现完成ioc子容器的创建,这里我们使用的是注解方法,显然不是

 

spring mvc实现原理源码相关解读

 

 spring mvc实现原理源码相关解读

 

注意到最开始的哪个spi机制加载过来的类,正是这个类完成了对于dispatcherServlet对象的创建操作,之后在调用相关init方法完成对于子容器的创建操作。

--------------------------------------------------------------------------------------------------------------------到此spring mvc与spring相关工程启动工作结束

下面开始介绍spring mvc对应的执行流程 

 

spring mvc实现原理源码相关解读

 

spring mvc源码阅读的入口方法dispactherServlet.doService方法

 

 

spring mvc实现原理源码相关解读

 

 

spring mvc实现原理源码相关解读

 

 

spring mvc url与方法连接关系 

 

spring mvc实现原理源码相关解读

 

spring mvc中传参获取原理

spring mvc实现原理源码相关解读

 

 spring mvc实现原理源码相关解读

 

执行url中链接中方法

 

spring mvc实现原理源码相关解读

 

 

拦截器执行原理

spring mvc实现原理源码相关解读

spring mvc实现原理源码相关解读

------------------------------------------------------------到此spring mvc与spring结合原理与spring mvc执行流程源码解析结束

 

相关文章: