为什么SpringBoot的 jar 可以直接运行?

简介: SpringBoot的 jar 可以直接运行的原因

Spring Boot 的 JAR 文件可以直接运行,这是因为 Spring Boot 提供了一个名为 "Spring Boot Executable Jar" 或 "Fat JAR" 的特性。这种 JAR 文件包含了应用程序所需的所有依赖,以及一个特殊的启动器,使得它能够像一个独立的可执行程序一样运行。

以下是 Spring Boot JAR 可以直接运行的几个关键原因:

嵌入式 Web 服务器:Spring Boot 默认集成了嵌入式的 Web 服务器,如 Tomcat、Jetty 或 Undertow。这些服务器被打包在 JAR 文件中,因此应用程序不需要外部 Web 服务器即可运行。
打包所有依赖:Spring Boot 使用 spring-boot-maven-plugin 或 spring-boot-gradle-plugin 插件来构建可执行的 JAR 文件。这些插件会将应用程序的所有依赖(包括 Spring Boot 的依赖和应用程序自身的依赖)一起打包到 JAR 文件的 BOOT-INF/lib 目录下。
启动器(Launcher):Spring Boot 的 JAR 文件包含一个特殊的启动器,通常位于 JAR 文件的根目录下,名为 META-INF/MANIFEST.MF。这个清单文件指定了主类(包含 main 方法的类),并且包含一个启动器,如 org.springframework.boot.loader.JarLauncher,它负责启动应用程序。
自定义类加载器:Spring Boot 的启动器使用了一个自定义的类加载器,它能够从 JAR 文件内部的 BOOT-INF/lib 目录加载应用程序的类和依赖。这使得应用程序的类和依赖可以一起打包在同一个 JAR 文件中,并且可以被正确地加载和执行。
命令行运行:由于 Spring Boot 的 JAR 文件是可执行的,你可以通过简单的命令行指令来运行它,例如:

java -jar myapplication.jar
这个命令会触发启动器,启动器会加载应用程序的主类并执行 main 方法,从而启动整个应用程序。
总结来说,Spring Boot 的 JAR 文件之所以可以直接运行,是因为它包含了所有必要的依赖和一个特殊的启动器,这个启动器能够正确地加载应用程序的类和依赖,并启动应用程序。这种打包方式简化了部署过程,使得应用程序可以轻松地在不同的环境中运行。

目录
打赏
0
1
2
1
8
分享
相关文章
如何实现上传jar直接部署成功,这篇文章直接带你上手springboot实现jar包热更新!
本文详细讲解了在Spring Boot应用中实现Jar包热更新的实践方法。通过自定义类加载器(`HotClassLoader`),动态加载和卸载指定目录下的Jar包,结合Spring Bean动态注册机制,使新加载的类能够被Spring容器管理。同时,提供了文件上传接口,方便用户手动触发Jar包更新。文章还强调了安全性、依赖管理和线程安全等注意事项,并给出了测试步骤和总结,帮助开发者高效实现热更新功能,减少服务中断和提升开发效率。
SpringBoot整合XXL-JOB【04】- 以GLUE模式运行与执行器负载均衡策略
在本节中,我们将介绍XXL-JOB的GLUE模式和集群模式下的路由策略。GLUE模式允许直接在线上改造方法为定时任务,无需重新部署。通过一个测试方法,展示了如何在调度中心配置并使用GLUE模式执行定时任务。接着,我们探讨了多实例环境下的负载均衡策略,确保任务不会重复执行,并可通过修改路由策略(如轮训)实现任务在多个实例间的均衡分配。最后,总结了GLUE模式和负载均衡策略的应用,帮助读者更深入理解XXL-JOB的使用。
131 9
SpringBoot整合XXL-JOB【04】-  以GLUE模式运行与执行器负载均衡策略
深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案
本文深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案。通过检查GraalVM版本兼容性、配置反射列表、使用代理类、检查配置文件、禁用不支持的功能、查看日志文件、使用GraalVM诊断工具和调整GraalVM配置等步骤,帮助开发者快速定位并解决问题,确保服务的正常运行。
151 1
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
如何在Linux系统下部署和运行Java项目jar包,包括传输文件到Linux、使用nohup命令运行jar包、查看端口状态、杀死进程和查看项目运行状态,以及如何解决“没有主清单属性”的错误。
1084 2
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
如何将Spring Boot应用程序运行到自定义端口
如何将Spring Boot应用程序运行到自定义端口
206 0
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
387 2
|
6月前
|
如何在windows上运行jar包/JAR文件 如何在cmd上运行 jar包 保姆级教程 超详细
本文提供了一个详细的教程,解释了如何在Windows操作系统的命令提示符(cmd)中运行JAR文件。
2126 1
Maven使用IDEA自带工具打包,同时将lib下的jar包打入,双击jar包可直接运行
使用IntelliJ IDEA的Artifacts功能,可以将项目依赖的第三方jar包打包进jar文件中,实现双击jar包即可直接运行。
Maven使用IDEA自带工具打包,同时将lib下的jar包打入,双击jar包可直接运行
【Azure Developer】记录一次使用Java Azure Key Vault Secret示例代码生成的Jar包,单独运行出现 no main manifest attribute, in target/demo-1.0-SNAPSHOT.jar 错误消息
【Azure Developer】记录一次使用Java Azure Key Vault Secret示例代码生成的Jar包,单独运行出现 no main manifest attribute, in target/demo-1.0-SNAPSHOT.jar 错误消息
156 0
【Azure 应用服务】一个 App Service 同时部署运行两个及多个 Java 应用程序(Jar包)
【Azure 应用服务】一个 App Service 同时部署运行两个及多个 Java 应用程序(Jar包)
102 0

热门文章

最新文章