Spring Boot(1)启动流程源码分析
2021-05-05 19:28
标签:定义类 使用 开放 eth spring loading runner boot 手动 spring boot提供了一个spring-boot-maven-plugin的插件,用于将spring boot程序打包成可执行的jar包(fat jar),在pom.xml里加入这个插件 Main-Class是fat jar可执行主类名,即:org.springframework.boot.loader.JarLauncher,这个才是Spring Boot应用的入口。 这样就可以看到spring boot loader了 打包时就是把这个jar里的内容拷贝到fat jar里。 JarLauncher的main方法两步:new JarLauncher()、launch(args) new JarLauncher()完成了构造Archive,这里即JarArchive。 launch(args)调用的是基类Launcher里的方法,源码如下: 创建MainMethodRunner,反射调用spring boot启动类里的main方法。 Spring Boot(1)启动流程源码分析 标签:定义类 使用 开放 eth spring loading runner boot 手动 原文地址:https://www.cnblogs.com/onezg/p/13192066.html1、spring boot可执行jar的内容
1.1、怎么打包成可执行jar
1.2、可执行jar包的目录结构和内容
myspringboot-0.0.1-SNAPSHOT
--BOOT-INF
--classes >里面是自己的springboot程序的class
--lib >pom.xml里的依赖jar
--classpath.idx >lib里jar包的清单
--META-INF
--maven >maven的相关文件,pom.xml、pom.properties(gav)
--MANIFEST.MF >jar包的标准清单
--org >spring boot loader相关类
--springframework
--boot
--loader
--JarLauncher.class
--WarLauncher.class
--...
1.2.1、META-INF
Manifest-Version: 1.0
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
Implementation-Title: myspringboot
Implementation-Version: 0.0.1-SNAPSHOT
Start-Class: com.lionman.boot.MainApplication
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Build-Jdk-Spec: 1.8
Spring-Boot-Version: 2.3.1.RELEASE
Created-By: Maven Jar Plugin 3.2.0
Implementation-Vendor: Pivotal Software, Inc.
Main-Class: org.springframework.boot.loader.JarLauncher
1.2.2、spring boot lader相关类
2、JarLauncher
2.2.1、new JarLauncher()
2.2.2、launch(args)
3、spring boot为什么要自定义类加载器
4、附:JarLauncher流程图
文章标题:Spring Boot(1)启动流程源码分析
文章链接:http://soscw.com/index.php/essay/82870.html