《springboot源码系列》——内置tomcat启动原理
tomcat作为一个web容器,启动后可以监听指定端口号、接收http请求,然后对请求进行封装后转发到servlet代码中。一般mvc框架都会把请求自动映射到我们的controller上去。那么在springboot中、它是如何自动实现的呢。
获取Autoconfiguration
springboot项目默认开启了 @EnableAutoConfiguration 注解,里面 import 了 AutoConfigurationImportSelector 类,他会找到需要满足规范需要自动装配jar的所有AutoConfiguration配置。比如我这个项目引入的mybatis、redis,以及内置的 tomcat 等。
构建WebServerFactory
ServletWebServerFactoryAutoConfiguration 这个配置类就负责对webserver容器自动装配,springboot默认的容器是tomcat,所以它这里的webserver就是tomcat了。首先是通过配置文件 定制出了一个 webServerFactory。
创建WebServer
启动的时候,ServletWebServerApplicationContext 的 createWebServer 方法就是基于 tomcat 原生的api组装出一个webserver,然后调用 this.tomcat.start(); 启动容器,用来接收http请求。
注册DispatcherServlet
我们在使用springmvc的时候,所有的请求是交给 DispatcherServlet 处理的,我们会在web.xml配置需要被拦截的url。那么在 springboot 中肯定也有一个 DispatcherServletAutoConfiguration 的。这里首先就创建了一个 DispatcherServlet 的 Bean, 它是直接映射到 根路径。
然后紧接着,就把 注册到了tomcat中,这样tomcat就能接收我们的请求了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix