Spring:SpringBoot为什么可以使用Jar包启动

SpringBoot 之所以可以使用 Jar 包启动,主要得益于其内置的 Spring Boot Maven 或 Gradle 插件,这些插件在打包过程中进行了一系列的特殊处理,使得打包出来的 Jar 文件不仅仅包含了应用的代码和资源,还包含了所有必需的依赖库(即所谓的“可执行的胖 Jar”或“uber-jar”)。此外,SpringBoot 还利用了 Java 的 Manifest.MF 文件和 Main-Class 属性来指定启动类的位置,以及一个特殊的类加载器来加载 Jar 包内部的依赖库。

以下是具体几个关键点的解释

  • Maven 或 Gradle 插件
    Spring Boot Maven 插件(spring-boot-maven-plugin)或 Spring Boot Gradle 插件(spring-boot-gradle-plugin)在打包过程中,会将项目的所有依赖库以及项目的编译后的类文件打包成一个单一的 Jar 文件。这个 Jar 文件不仅包含了应用的代码,还包含了应用运行所需的所有依赖库。
  • Manifest.MF 文件
    在打包的 Jar 文件中,包含一个名为 META-INF/MANIFEST.MF 的文件,这是 Java 的清单文件,用于存储关于 Jar 文件的信息。Spring Boot 插件会在这个文件中设置 Main-Class 属性,该属性指定了包含 main 方法的类(即应用的启动类)。
    默认情况下,Spring Boot Maven 插件会使用 org.springframework.boot.loader.LaunchedURLClassLoader 类作为启动类加载器,这个类加载器能够处理 Jar 文件内部的依赖库。
  • Spring Boot 的启动器(Starters)
    Spring Boot 提供了大量的启动器(Starters),这些启动器是依赖描述符的集合,可以简化 Maven 或 Gradle 的依赖管理。通过引入启动器,开发者可以很方便地添加项目所需的功能而无需手动指定版本和依赖关系。
  • 嵌入式服务器
    Spring Boot 支持多种嵌入式服务器(如 Tomcat、Jetty、Undertow),这些服务器被打包进 Jar 文件,并在应用启动时自动配置和启动。这使得开发者可以直接运行 Jar 文件来启动一个完整的 Web 应用,而无需在服务器上部署。

综上所述,SpringBoot 使用 Jar 包启动的便利性主要得益于其内置的打包插件、对 Jar 结构的特殊处理以及嵌入式服务器的支持。这些特性使得 SpringBoot 应用可以很容易地打包、分发和运行,从而简化了开发和部署过程。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玉成226

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值