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-Classmain()方法

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

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓
Prev Post
Today In History
Browsing Refresh