Spring Boot中Spring MVC的源码解析

这篇博客主要讲解一下spring boot中spring mvc的流程及其源码部分解析。

spring mvc流程就暂时先不说,太多人有说了,相信大家应该也已经熟悉了,spring mvc流程参考:https://blog.csdn.net/zhaolijing2012/article/details/41596803

web上下文和DispatcherServlet初始化

spirng boot中的spring mvc与原本的spring mvc初始化不同,使用spring配置来引导自身和其嵌入Servlet容器,而不是像之前那样挂载到Serlet容器的生命周期。而是基于spring boot的自动配置启动,首先初始化Servlet上下文,通过ServletWebServerApplicationContext实现spring mvc的上下文,它会自动通过查找在spring 上下文ApplicationContext中的ServletWebServerFactory来新建和初始化自己。

在该类的注释及spring boot的文档中有说明都可以看出来。
Spring Boot中Spring MVC的源码解析_第1张图片
Spring Boot中Spring MVC的源码解析_第2张图片

Spring MVC及Tomcat具体初始化流程:

  1. 调用postProcessBeanFactory方法在Bean初始化之前完成Servlet的一些默认配置。具体是先后调用onRefresh()createWebServer()getSelfInitializer()等方法初始化Tomcat容器所需的默认bean和加载Config类中配置。另外,在createWebServer中得到ApplicationContext中的ServletWebServerFactory类,在得到该类过程中,通过@Bean注解初始化DispatcherServlet类。这样就将ServletWebServerApplicationContext该类初始化到spring容器中,并初始化tomcat的一些基本配置了。

  2. 接着是通过调用selfInitialize方法,在该方法中获取所有ServletContextInitializer对象,并调用其onStartup方法。这里的ServletContextInitializer是Filter和Servlet等Web组件类的实现接口,调用onStartup方法即是将它们添加到ServletContainer中.

selfInitialize方法
Spring Boot中Spring MVC的源码解析_第3张图片

ServletContextInitializer实现的类
Spring Boot中Spring MVC的源码解析_第4张图片

URL映射流程

  1. 调用RequestMappingHandlerMapping中的方法,开始装载URL与Controller方法之间的对应关系。

  2. 启动tomcat

你可能感兴趣的:(java,spring,spring,boot,spring,mvc)