当前位置: 首页 > news >正文

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

http://www.xdnf.cn/news/363115.html

相关文章:

  • Web端项目系统访问页面很慢,后台数据返回很快,网络也没问题,是什么导致的呢?
  • NVME / DoCA 是什么?
  • 开源数字人框架 AWESOME-DIGITAL-HUMAN 技术解析与应用指南
  • 【Ansible】模块详解
  • 切比雪夫不等式专题习题解析
  • 国联股份卫多多与北京经纬智诚签署战略合作协议
  • 使用Python和TensorFlow实现图像分类的人工智能应用
  • 计算人声录音后电平的大小(dB SPL->dBFS)
  • Leetcode刷题 由浅入深之字符串——541. 反转字符串Ⅱ
  • Spring中除DI之外获取 BEAN 的方式​
  • 数据结构每日一题day18(链表)★★★★★
  • 在自然语言处理任务中,像 BERT 这样的模型会在输入前自动加上一些特殊token
  • MCP(Model Context Protocol)是专为LLM(大语言模型)应用设计的标准化协议
  • CKESC STONE 200A-M 工业级电调技术测评:全场景适配的动力控制核心
  • 【谭浩强】第七章第14题
  • 【C语言】--指针超详解(三)
  • Qwen智能体qwen_agent与Assistant功能初探
  • 昆仑万维一季度营收增长46% AI业务成新增长点
  • epoch、batch size和steps_per_epoch的区别
  • Linux 大于2T磁盘分区
  • FPGA 41 ,ICMP 协议详细解析之构建网络诊断系统( ICMP 协议与 IP 协议理论详细解析 )
  • windows下,docker虚拟化使用nginx镜像部署vue3+vite项目
  • 数据库基础:概念、原理与实战示例
  • 多账号管理与自动化中的浏览器指纹对抗方案
  • 北斗导航 | RTKLib中重难点技术,公式,代码
  • 【质量管理】TRIZ因果链分析:解码质量问题的“多米诺效应“
  • 20250509——TOPSIS计算各方案得分
  • 怎么判断是不是公网IP?如何查看自己本地路由器是内网ip还是公网?
  • Lightweight App Alternatives
  • gpu硬件,gpu驱动,cuda,CUDA Toolkit,cudatoolkit,cudnn,nvcc概念解析