首页 >> 知识 >> Spring Boot 打包成Jar包运行的原理

Spring Boot 打包成Jar包运行的原理

相比于传统的Java打包方式,使用SpringBoot打包插件打包成jar包后,可以直接使用java -jar 运行SpringBoot项目,本篇就来分析一下运行的原理。

SpringBoot打包插件

org.springframework.boot spring-boot-maven-plugin

打包完后会生成两个文件,一个***.jar和***.jar.original

.jar文件是SpringBoot打包后生成的文件,.jar.original是用原生方式打包生成的文件,对比一下两个的区别

.jar.original文件

.jar文件

.jar.original就是普通的jar打包的结构,这里主要看.jar文件的结构:

META-INFO目录:META-INFO/MANIFEST.MF里包含了jar包的元数据,包含了项目的启动类等信息.

org目录:该目录下包含的是启动项目的一些类,启动的过程就在这个包里。

BOOT-INFO目录:本地项目的代码(BOOT-INF/classes),以及所需的依赖(BOOT-INFO/lib)

重点在META-INFO/MANIFEST.MF里:

Manifest-Version: 1.0Spring-Boot-Classpath-Index: BOOT-INF/classpath.idxImplementation-Title: demoImplementation-Version: 0.0.1-SNAPSHOTSpring-Boot-Layers-Index: BOOT-INF/layers.idxStart-Class: com.example.demo.DemoApplicationSpring-Boot-Classes: BOOT-INF/classes/Spring-Boot-Lib: BOOT-INF/lib/Build-Jdk-Spec: 1.8Spring-Boot-Version: 2.4.5Created-By: Maven Jar Plugin 3.2.0Main-Class: org.springframework.boot.loader.JarLauncher

这里有几个重点的字段

Main-Class :jar包启动类,这是java规定的字段,存在这个字段的情况下, 在java -jar时,jar包才会运行起来 Start-Class:本地项目的启动类 Spring-Boot-Classes:加载应用类的入口 Spring-Boot-Lib:项目所需的依赖

有了Main-Class启动类,那就直接进入到JarLauncher里查看运行的过程

public static void main(
网站地图