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 容器。

相关推荐
AI你一生一世6 小时前
不止于时序存储:DolphinDB 如何成为 AI 时代的工业智能底座
java·人工智能·struts·时序数据库·工业智能·dolphindb·ai基础设施
云-缩影6 小时前
拆解 AI 图像生成应用的后端架构:ECS、OSS 和大模型 API 怎么配合
java·spring boot·后端
瑞克-桑切斯7 小时前
7、MySQL 慢查询排查与优化实战指南
java·服务器·数据库
AI开源软件8 小时前
SpringBoot3+Vue3 财务管理系统如何设计:从业务单据到总账的模块划分
spring boot·vue3·领域建模·会计凭证·ruoyi office·业财协同·财务系统设计
Flynn Liang10 小时前
AI 应用的安全红线:Spring AI 下的 Prompt 注入防护、PII 脱敏、输出审计与密钥管理
人工智能·安全·spring·数据泄露·springai·prompt注入
QCoding10 小时前
企业级Agent Evaluation实战:Agent能跑就能上线?AI Agent到底怎么测?
后端·spring
海的透彻11 小时前
dockerfile如何快速构建容器(java服务)
java·开发语言
code2cat11 小时前
Java工具篇之Gradle:用任务图组织构建与交付
java·开发语言·单元测试·gradle
后台模板学习12 小时前
大模型 Prompt 工程在电商订单系统中的踩坑记录
java·python·prompt
w_zero_one12 小时前
算法--构造
java·数据结构·算法