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

相关推荐
杰克尼3 分钟前
3. 分巧克力
java·数据结构·算法
听风吟丶4 分钟前
Java 高级多线程编程:从虚拟线程到结构化并发的实战演进
java·开发语言
o***59275 分钟前
Spring 过滤器:OncePerRequestFilter 应用详解
java·后端·spring
稚辉君.MCA_P8_Java10 分钟前
Gemini永久会员 三个线程(A、B、C)交替执行
java·后端·架构
lijiatu1008612 分钟前
C++ 类成员变量声明语法错误
java·开发语言·c++
汝生淮南吾在北15 分钟前
SpringBoot+Vue超市收银管理系统
vue.js·spring boot·后端
p***930317 分钟前
SpringBoot + vue 管理系统
vue.js·spring boot·后端
Monly2120 分钟前
Java八股文:Redis篇
java·开发语言·redis
L***p31335 分钟前
Spring Boot 经典九设计模式全览
java·spring boot·设计模式
故事不长丨1 小时前
C#线程的使用
java·microsoft·c#