spring-boot项目用jar包启动时Launcher与项目

2019-11-07  本文已影响0人  错对对

spring-boot 可执行jar中

META-INF/MANIFEST.MF

Manifest-Version: 1.0 Created-By: Maven Archiver 3.4.0 Build-Jdk-Spec: 11 Implementation-Title: spring-boot Implementation-Version: 0.0.1-SNAPSHOT Main-Class: org.springframework.boot.loader.JarLauncher Start-Class: com.cdd.springboot.Application Spring-Boot-Version: 2.2.0.RELEASE Spring-Boot-Classes: BOOT-INF/classes/ Spring-Boot-Lib: BOOT-INF/lib/

根据java官方文档和java文档规范我们知道jar包启动必须在META-INF/MANIFEST.MF(启动类)定义Main-class和Start-Class(引导类)

image.png

spring-boot项目编译成jar包的目录结构如下

1、BOOT-INF存放项目的class和依赖

2、META-INF存放maven打包配置和MANIFEST.MF

3、最后一个文件夹存放解析jar包的launcher

image.png

根据META-INF/MANIFEST.MF里面的配置内容可以发现 当使用jar方式部署时spring-boot 用org.springframework.boot.loader.JarLauncher这个类启动整个项目,当然也可以很容易的发现用war包部署时用org.springframework.boot.loader.WarLauncher启动

image.png

jar包启动首先会调用Main-Class的main方法,跟踪代码会发现最终会同步调用Start-Class的main方法,所以看到这里我们可以得出结论 用jar包启动时项目的启动类和JarLauncher属于同一进程。

上一篇 下一篇

猜你喜欢

热点阅读