You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中嵌入式Tomcat工作原理与应用JAR执行机制咨询

Spring Boot嵌入式Tomcat工作原理与JAR执行机制

一、嵌入式Tomcat的启动逻辑

Spring Boot靠自动配置(AutoConfiguration) 搞定嵌入式Tomcat的初始化,核心是TomcatServletWebServerFactory这个类——它会帮你创建Tomcat实例、配置端口、上下文路径、线程池这些参数,甚至可以自定义连接器(比如HTTPS配置)。

当你启动Spring Boot应用时,SpringApplication会先判断当前是Web环境,然后切换到ServletWebServerApplicationContext上下文。这个上下文的核心任务就是创建并启动Web服务器:它会从容器里取出TomcatServletWebServerFactory,调用它的getWebServer()方法生成TomcatWebServer实例,然后调用start()方法启动Tomcat。

二、可执行JAR的执行机制

Spring Boot的可执行JAR和普通JAR不一样,它是嵌套结构:

  • BOOT-INF/classes:存放你的应用代码和资源文件
  • BOOT-INF/lib:存放所有依赖的第三方JAR包
  • META-INF/MANIFEST.MF:里面有两个关键配置:
    • Main-Class: org.springframework.boot.loader.JarLauncher:这是JVM启动时执行的主类,属于Spring Boot Loader模块
    • Start-Class: com.yourpackage.YourApplication:这是你自己写的Spring Boot主类

JVM本身没法加载嵌套在JAR里的JAR,所以JarLauncher会创建一个自定义类加载器LaunchedURLClassLoader,把BOOT-INF/classes目录和BOOT-INF/lib下的所有JAR都加入类路径,然后通过反射调用Start-Class指定的主类的main()方法,这样你的应用就启动了。

三、嵌入式Tomcat如何运行你的应用

当你的Spring Boot主类启动后,自动配置会触发这些步骤:

  1. 注册DispatcherServlet到Tomcat的ServletContext里,它是Spring MVC的核心Servlet,负责处理所有HTTP请求
  2. Spring容器会初始化你的Controller、Service、Repository等Bean,并把它们纳入管理
  3. Tomcat启动后,监听指定端口,接收到请求后会转发给DispatcherServlet
  4. DispatcherServlet根据请求路径,通过HandlerMapping找到对应的Controller方法,执行后返回响应

四、学习资源推荐

  • 深入阅读Spring Boot官方文档中「Embedded Web Servers」相关章节,涵盖自动配置规则、服务器定制方法、启动流程细节
  • 分析Spring Boot Loader模块的源码,重点看JarLauncher、LaunchedURLClassLoader的实现逻辑,理解嵌套JAR的加载机制
  • 查看Tomcat官方文档的嵌入式Tomcat部分,了解Tomcat作为嵌入组件的API使用方式

内容的提问来源于stack exchange,提问作者Avinash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 09:32:40