Spring Boot 打包后的 JAR 包之所以能直接运行(使用 ),是因为它采用了一种特殊的打包结构,被称为 "Fat JAR" (或 Uber JAR),并内置了一套自定义的 类加载机制 (Class Loading Mechanism)。 核心原理可以概括为以下三点: 1. 特殊的目录结构:将应用代码和依赖 JAR 包分开存放。 2. Manifest 文件重定向:入口类不是你的业务代码,而是 Spring Boot 提供的启动器。 3. 自定义类加载器:解决了“JAR 包里嵌套 JAR 包”无法被 JVM 默认加载的问题。 下面详细解析其内部原理: --- 1. 内部结构(解压 JAR 包看一看) 如果你把 Spring Boot 打包好的 文件解压,你会看到以下目录结构: 普通 JAR:通常把所有 文件放在根目录下。 Spring Boot JAR: :这是 Spring Boot 注入的一套“引导程序”,负责初始化环境。 :你的代码被挪到了这里。 :所有的 Maven/Gradle 依赖都被放在这里(嵌套 JAR)。 --- 2. 核心机制:MANIFEST.MF ...