Spring Boot中Spring MVC的源码解析

本文详细解析了SpringBoot中SpringMVC的工作流程及源码,介绍了如何通过自动配置初始化Servlet上下文,以及DispatcherServlet的创建过程。深入探讨了web上下文初始化、Tomcat配置、URL映射等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

spring mvc流程就暂时先不说,太多人有说了,相信大家应该也已经熟悉了,spring mvc流程参考:https://blog.youkuaiyun.com/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的文档中有说明都可以看出来。
ServletWebServerApplicationContext注释
spring boot文档关于ServletWebServerApplicationContext说明

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方法
selfInitialize方法

ServletContextInitializer实现的类
ServletContextInitializer实现的类

URL映射流程

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

  2. 启动tomcat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值