SpringBoot可执行包结构
来源:互联网 发布:i wrote python 编辑:程序博客网 时间:2024/05/19 05:33
下面的SpringBoot官方文档对此行为的描述。
https://docs.spring.io/spring-boot/docs/current/reference/html/executable-jar.html
简单来说
- JAR文件的结构
其中SpringBoot提供的bootstrap的类是放到包的最外面,比如上面的org.springframework.boot.loader。 应用程序自己的代码则是需要放到BOOT-INF/classes目录下面;然后应用程序自己依赖的其它的jar文件则需要放到BOOT-INF/lib目录下。example.jar | +-META-INF | +-MANIFEST.MF +-org | +-springframework | +-boot | +-loader | +-<spring boot loader classes> +-BOOT-INF +-classes | +-mycompany | +-project | +-YourClasses.class +-lib +-dependency1.jar +-dependency2.jar
当这个jar作为standardalone的程序运行时(没有放到container),SpringBoot会在生成的META-INF/MANIFEST.MF里面将Main-Class设置成org.springframework.boot.loader.JarLauncher,JarLauncher类会创建一个spring自己的ClassLoader: LaunchedURLClassLoader, 这个classloader 会就能通过URL来加载上面BOOT-INF/lib里面所依赖的包,并且通过反射Manifest里面的Start-Class里面定义的类,然后invoke这个类里面的main方法。
Manifest-Version: 1.0
Spring-Boot-Classes: BOOT-INF/classes/
Implementation-Title: gs-rest-service
Implementation-Version: 0.1.0
Built-By: elichon
Start-Class: hello.Application
Created-By: Apache Maven 3.3.9
Implementation-URL: http://projects.spring.io/spring-boot/gs-rest-serv
ice/
Implementation-Vendor: Pivotal Software, Inc.
Implementation-Vendor-Id: org.springframework
Build-Jdk: 1.7.0_79
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Version: 1.5.3.RELEASE
Main-Class: org.springframework.boot.loader.JarLauncher
Archiver-Version: Plexus Archiver
- WAR文件的结构
example.war | +-META-INF | +-MANIFEST.MF +-org | +-springframework | +-boot | +-loader | +-<spring boot loader classes> +-WEB-INF +-classes | +-com | +-mycompany | +-project | +-YourClasses.class +-lib | +-dependency1.jar | +-dependency2.jar +-lib-provided +-servlet-api.jar +-dependency3.jar
同样的,当用spring-boot来运行一个war包时,应当把依赖包放到WEB-INF/lib目录。然后对于应用程序依赖的jar,但传统的web container会提供的JAR,但需要把它们放到
WEB-INF/lib-provided。这样就可以以下面的方式来启动这个war了: jar -jar example.war。
- SpringBoot可执行包结构
- SpringBoot可执行包结构
- SpringBoot+Maven添加本地jar包并package可执行jar包的方法
- springboot Maven 打包可执行jar
- 制作可执行jar包
- show_space_assm包(可执行)
- 打可执行jar包
- 可执行程序的结构
- springboot打包成可执行Jar文件教程
- springboot创建一个可执行的jar
- SpringBoot Maven 打包可执行jar文件
- springboot创建一个可执行的jar
- 制作jar包,双击可执行
- Eclipse导出可执行jar包
- 可执行的jar包制作
- maven构建可执行jar包
- java生成可执行jar包
- java制作可执行jar包
- Wampserver 上 phalcon安装 配置
- 171212之HTML中readyonly和disable的区别
- 深入理解Mysql数据库主从延迟
- UE4 GC
- Jacoco Code Coverage
- SpringBoot可执行包结构
- eclipse中git从远程clone项目报错:cannot open git-upload-pack
- php中的类与对象(遍历)
- 面试宝典---java程序设计的基本概念
- layui注意事项
- 作业2用两个线程玩猜数字游戏
- Codeforces Round #450 (Div. 2) 题解
- 怎么在Android Studio 中编译的APK兼容x86的CPU架构
- [Rcode]线性回归