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

相关推荐
尸僵打怪兽15 分钟前
软考错题集
java·python·计算机网络·操作系统·c·软考·计算机组成原理
zz07232018 分钟前
第二十一周:项目开发中遇到的相关问题(二)
java·spring·restful
alden_ygq30 分钟前
Kubernetes生产实战(十四):Secret高级使用模式与安全实践指南
java·安全·kubernetes
wuli玉shell31 分钟前
spark-Schema 定义字段强类型和弱类型
android·java·spark
LJianK135 分钟前
JavaWeb, Spring, Spring Boot
java·spring boot·spring
wyhwust1 小时前
idea出现tomcat不能正确部署的问题--解决方案
java·ide·intellij-idea
带刺的坐椅1 小时前
FastMCP(python)和 SolonMCP(java)的体验比较(不能说一样,但真的很像)
java·python·solon·mcp·fastmcp
一勺菠萝丶1 小时前
深入浅出:Spring Boot 中 RestTemplate 的完整使用指南
java·spring boot·后端
努力的搬砖人.1 小时前
Java 线程池原理
java·开发语言
海风极客2 小时前
《Go小技巧&易错点100例》第三十二篇
后端·spring·golang