SpringBoot生成jar/war包的布局应用
在 Spring Boot 中,"布局应用"(Application Layout)指的是打包生成的可执行 jar 或 war 文件中的内容组织结构。Spring Boot 使用一种特殊的布局来确保打包的应用可以通过 java -jar 命令直接运行,同时内嵌 Servlet 容器(如 Tomcat、Jetty 或 Undertow)也被包含在内,使得应用可以作为一个独立的微服务运行,无需外部的 Servlet 容器。
标准的 Java 应用布局:
在传统的 Java 应用中,一个 jar 文件通常包含以下结构:
my-application.jar
│
├── META-INF
│ └── MANIFEST.MF
├── com
│ └── example
│ └── MyApplication.class
└── lib
├── dependency1.jar
├── dependency2.jar
└── ...
META-INF/MANIFEST.MF文件包含元数据,如主类(Main-Class)。- 应用的类文件(如
MyApplication.class)直接包含在 jar 文件的根目录下。 - 依赖的库(如
dependency1.jar、dependency2.jar)通常位于lib目录下,或者完全分离,需要在运行时通过类路径(classpath)指定。
Spring Boot 的可执行 jar 布局:
Spring Boot 改变了这种布局来支持自包含的、可执行的 jar 文件,这种文件被称为“胖 jar”(Fat Jar)或“超级 jar”(Uber Jar),其结构如下:
vbnetCopy code my-spring-boot-application.jar │ ├── META-INF │ ├── MANIFEST.MF │ └── ... ├── org │ └── springframework │ └── boot │ └── loader │ ├── JarLauncher.class │ ├── WarLauncher.class │ ├── ... │ ├── BOOT-INF │ ├── classes │ │ └── com │ │ └── example │ │ └── MyApplication.class │ │ │ └── lib │ ├── spring-boot-starter-web-2.3.0.RELEASE.jar │ ├── my-other-dependency-1.0.0.jar │ └── ... │ └── application.properties
META-INF/MANIFEST.MF包含 Spring Boot 特有的元数据,指定了使用 Spring Boot 类加载器框架的启动类(如JarLauncher)。- 应用的类文件被放在
BOOT-INF/classes目录下。 - 应用的所有依赖库被放在
BOOT-INF/lib目录下。 - Spring Boot 的类加载器框架相关的类位于
org/springframework/boot/loader下,这些类负责正确地加载BOOT-INF下的类和库。
为什么需要这种特殊布局:
这种特殊的布局允许 Spring Boot 应用将自己的类和第三方库隔离开来,避免了类路径冲突的问题,并确保了应用可以作为一个独立的单元被运行。这种布局使得部署和分发 Spring Boot 应用变得非常简单,因为所有需要的东西都被封装在一个文件内,无需额外的配置或外部依赖。
以上就是SpringBoot生成jar/war包的布局应用的详细内容,更多关于SpringBoot生成jar/war包的资料请关注脚本之家其它相关文章!
相关文章
IDEA插件之彩虹括号Rainbow Brackets使用介绍
这篇文章主要为大家介绍了IDEA插件之彩虹括号Rainbow Brackets使用介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-03-03
关于SpringBoot的spring.factories文件详细说明
spring.factories 文件是 Spring Boot 自动配置机制的核心部分之一,它位于每个 Spring Boot 自动配置模块的 META-INF 目录下,经常看到 spring.factories 文件,却没有对它进行深入的了解和分析,今天我们就一起揭开面纱看看它的内在,需要的朋友可以参考下2024-12-12
Springboot swagger配置过程详解(idea社区版2023.1.4+apache-maven-3
这篇文章主要介绍了Springboot-swagger配置(idea社区版2023.1.4+apache-maven-3.9.3-bin),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-07-07


最新评论