springboot jar包启动流程

springboot jar包启动流程:

       springbot在通过pom.xml配置的spring-boot-maven-plugin的repackage打包成一个fat jar包,打包的jar里面有BOOT-INF,这个目录里包含很多第三方依赖jar包,还有自己写的class文件,还有一个目录是MATA-INF,这里有MANIFEST文件,文件里我们自己写的应用启动类application,还有一个最重要的main-class,主函数是JarLauncher类,这个类也是main函数启动,源码中是创建一个 JarLauncher的无参构造函数,然后调用父类(ExecutableArchiveLauncher)的launch方法,以fat jar为参数传入,launch方法会生成一个LaunchedUrlClassLoader来会加载BOOT-INF里的jar包,然后启动我们自己写的应用启动类。

springboot IDE启动流程:

ide启动的时候会把jar包全部放到classpath中,所以springboot项目直接启动main函数就行。

总结:

JarLauncher通过加载BOOT-INF/classes目录及BOOT-INF/lib目录下jar文件,实现了fat jar的启动。

SpringBoot通过扩展JarFile、JarURLConnection及URLStreamHandler,实现了jar in jar中资源的加载。

SpringBoot通过扩展URLClassLoader–LauncherURLClassLoader,实现了jar in jar中class文件的加载。

WarLauncher通过加载WEB-INF/classes目录及WEB-INF/lib和WEB-INF/lib-provided目录下的jar文件,实现了war文 件的直接启动及web容器中的启动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值