springboot 加载 tomcat 源码追踪

加载 TomcatServletWebServerFactory

从 SpringApplication.run()方法进入

进入到 refresh () 方法

选择实现类 ServletWebServerApplicationContext

进入到 AbstractApplicationContext

onRefresh() 方法创建容器

找到加载bean

得到 webServer 实例

点击 getWebServer()

其实现类

如何知到是哪个实现类呢?接着往下看

自动装配 TomcatServletWebServerFactory

在 spring-boot-autoconfigure 包下找到 spring-autoconfigure-metadata.properties 文件

搜索 javax.servlet.ServletRequest 找到

复制代码
ServletWebServerFactoryAutoConfiguration 

核心就在 org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration

这个配置类中

点击 EmbeddedTomcat.class 进入 ServletWebServerFactoryConfiguration

该类根据项目中是否含有指定的类来加载对应的容器,并创建 ServletWebServerFactory

tomcat

jetty

Undertow

当 摁下 ctrl 可以跳转,则整明该项目下有这个类,

根据 @ConditionalOnClass 注解 则可以加载 EmbeddedTomcat

否则不能加载

项目因引入该依赖,从而引入了 tomcat 容器

至此, TomcatServletWebServerFactory 随着项目启动加载到了 spring 管理的 bean 当中

上文便可以获取到该工厂,初始化 tomcat 容器。

相关推荐
码匠许师傅21 分钟前
【C++ 面试真题】27. 聊聊 C++ 的内存泄漏与内存布局
java·c++·面试
PPPPickup1 小时前
金证秋招笔试
java·开发语言
不正经学生1 小时前
C语言结构体:自定义数据类型,让变量打包出行
java·c语言·开发语言·数据结构·算法
ycjunhua1 小时前
Spring AI 2.0 GA:ToolCallingAdvisor 重构与 Java Agent 新范式
java·人工智能·spring
开源必胜2 小时前
Future的异常处理以及CompletableFuture传播链、异常处理
java
林森lsjs2 小时前
队列 FIFO 原理 & 手撕两种队列实现(链表 + 循环数组)—数据结构陆
java·开发语言·数据结构·队列
lisin-lee-cooper3 小时前
简单聊聊 OpenFeign 框架源码
java·微服务
Buke..3 小时前
【APP 逆向】哔哩哔哩 sign 参数逆向(下):OLLVM 混淆还原 sign 算法
java·javascript·爬虫·python·算法
linux-hzh4 小时前
百日算法修炼 · Day 15
java·算法
风流 少年4 小时前
Spring AI 2.0:阿里云百炼平台(智能体应用)
redis·spring·阿里云