Spring Boot 以 Jar 包方式运行的启动流程解析
Spring Boot JVM About 851 words流程
Spring Boot Loader通过Main-Class启动,然后根据Start-Class再启动应用。
如果直接把Main-Class指向你的应用类,那么Jar就无法使用Spring Boot Loader的功能(如Loader-Path、外部依赖加载、扩展类加载器)。
Main-Class
作用:指定Jar的入口类(java -jar启动时JVM会执行这个类的main()方法)。
在Spring Boot的可执行Jar中,Main-Class不是你的应用类,而是Spring Boot提供的 启动器类,例如:
Main-Class: org.springframework.boot.loader.JarLauncher
这个类负责:
- 初始化
Spring Boot Loader - 解析
Loader-Path - 找到应用的启动类(
Start-Class) - 调用
Start-Class的main()方法
Start-Class
作用:告诉Spring Boot Loader,应用的真正启动类是哪一个。例如:
Start-Class: com.example.MyApplication
Spring Boot Loader会读取这个属性,然后调用:
com.example.MyApplication.main(args);
启动流程图
java -jar app.jar
↓
JVM → 读取 MANIFEST.MF → 找到 Main-Class
↓
执行 Main-Class.main() → Spring Boot Loader
↓
Loader 读取 Start-Class → 调用你的应用 main()
区别
| 属性 | 作用 |
|---|---|
| Main-Class | JVM 入口类,通常是 Spring Boot Loader(JarLauncher) |
| Start-Class | 你的应用启动类(@SpringBootApplication 所在类) |
Views: 17 · Posted: 2026-01-26
———         Thanks for Reading         ———
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...