对于SpringBoot打包的jar文件,我们呢,只通过java -jar一行命令便可以启动一个web项目,这如此神奇的效果是SpringBoot是如何帮你完成的呢?
一、从spring-boot-maven-plugin说起
对于SpringBoot项目,我们会在pom.xml文件添加打包插件spring-boot-maven-plugin,那么执行打包的时候,会生成相应的jar文件,比如:
弹簧启动你好-0.0.1-快照.jar
我们打开这个jar看下都有什么呢?
通过这里我们可以看出spring-boot-maven-plugin做了几个重要的事情:
(1)生成核心的文件MANIFEST.MF;
(2)把依赖的jar包进行打包;
这里普及一个知识点:jar里打包进去了别的jar包,这样的jar称为fat jar(胖的jar)。
标准的解释:在java中,通常将应用程序及其依赖jar一起打包到一个独立的jar中,就叫fat jar,它也叫uberJar。
在上面最重要的信息就是:MANIFEST.MF,我们进去一探究竟。
二、进入MANIFEST.MF一探究竟
我们脱去MANIFEST.MF的外衣看看里面是什么鬼?
我们把jar解压,然后使用记事本打开MANIFEST.MF文件:
在MANIFEST.MF文件中,重要的是两个属性是:
起步班: 弹簧靴
主要类:组织弹簧框架,引导,装载机,JarLauncher
我们会发现Start-Class指向的是我们的启动类,也就是注解了@SpringBootApplication的类。
Main-Class又是什么呢?接着往下看,为您揭晓。
三、java -jar做了什么?
。。。。。。。。。。。。。。。。。
版权原因,完整文章,请参考如下:面试官居然我问SpringBoot 是如何通过jar包启动的?- 第373篇