SpringMVC底层源码学习

在我们java项目中使用最多的控制层框架就是SpringMVC了,但是一直没有认真的学习过他的底层源码实现,只知道是如何使用,而不知道是怎么实现的
先来说说,我们一个项目是如何启动起来的,入口在哪里,我们项目的启动一般都是源于web.xml文件SpringMVC会驱动我们启动类去加载SpringIOC容器构建出web整体的上下文,因为我们springMVC框架需要用到SpringIOC容器,以此来getBean,而且我们也需要初始化webApplicationContext,那么他是如何初始化这两个上下文的呢
这就要从我们的web.xml文件说起了,在这个文件中我们需要配置这里面导入的是SpringIOC的配置文件,然后我们还需要配置一个监听器:用来监听IOC是否初始化完成,那么contextLoaderLister是如何将SpringIOC容器加入到web容器中,可以在后面的WEB开发时使用

我们可以看源码中有一个ContextLoader中的LoadParentContext方法,加载了双亲容器其中还有一个create方法用来创建webApplicationContext,
以下是我画的图解
SpringMVC底层源码学习
完成好根上下文的创建,那我们在写代码是getBean就十分方便了,就是相当于springMVC可以很方便的使用SpringIOC的getBean
这两个初始化完成后,我们就需要接受请求DispatcherServlet的HTTP请求来自于HttpServlet,而DispatcherServlet继承于Feameworkservlet,Feameworkservlet继承于HttpServletBean,在HttpServletBean中有一个init方法,他初始化了在配置文件中配置的Bean的属性,在Feameworkservlet中完成初始化了Bean,在DispatcherServlet的initStrategies方法中初始化了MVC的内置组件,最后的doDispatcher方法就是调用这些组件完成如图功能
SpringMVC底层源码学习
以上就是SpringMVC从初始化到完成的所有过程