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主类启动后,自动配置会触发这些步骤:
- 注册
DispatcherServlet到Tomcat的ServletContext里,它是Spring MVC的核心Servlet,负责处理所有HTTP请求 - Spring容器会初始化你的Controller、Service、Repository等Bean,并把它们纳入管理
- Tomcat启动后,监听指定端口,接收到请求后会转发给
DispatcherServlet DispatcherServlet根据请求路径,通过HandlerMapping找到对应的Controller方法,执行后返回响应
四、学习资源推荐
- 深入阅读Spring Boot官方文档中「Embedded Web Servers」相关章节,涵盖自动配置规则、服务器定制方法、启动流程细节
- 分析Spring Boot Loader模块的源码,重点看
JarLauncher、LaunchedURLClassLoader的实现逻辑,理解嵌套JAR的加载机制 - 查看Tomcat官方文档的嵌入式Tomcat部分,了解Tomcat作为嵌入组件的API使用方式
内容的提问来源于stack exchange,提问作者Avinash
相关产品推荐
相关产品推荐

