首页 > 其他分享 >为什么SpringBoot的 jar 可以直接运行?

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

时间:2024-09-04 14:55:09浏览次数:12  
标签:MF 启动器 SpringBoot jar Boot 应用 Spring 运行

 

Spring Boot 应用程序被打包成的jar包之所以可以直接通过 java -jar 命令运行,是因为Spring Boot在构建过程中做了一些特殊的设计和配置。具体原因:

  1. Fat/Uber JAR: Spring Boot使用maven插件spring-boot-maven-plugin(或Gradle对应的插件)将项目及其所有依赖项打包成一个单一的、自包含的jar文件,通常称为“Fat JAR”或“Uber JAR”。这意味着不仅包含了自己的类文件,还包含了运行应用所需的所有第三方库。
  2. Manifest.MF: 在打包过程中,此插件会修改MANIFEST.MF文件,这是jar包中的一个元数据文件。在MANIFEST.MF中,特别指定了Main-Class属性,该属性指向Spring Boot的一个内置的启动类(如org.springframework.boot.loader.JarLauncher),这个启动器类知道如何正确启动Spring Boot应用程序。
  3. 嵌入式Servlet容器:Spring Boot默认集成了诸如Tomcat、Jetty或Undertow等嵌入式Web容器,使得无需外部服务器环境也能运行Web应用。
  4. 启动器类加载器:当通过java -jar运行Spring Boot应用时,JVM会根据MANIFEST.MF中的Main-Class找到并运行指定的启动器类。这个启动器类加载器能够解压并加载内部的依赖库,并定位到实际的应用主类(在spring-boot-starter-parent@SpringBootApplication注解标记的类),进而执行其main方法。
  5. 类路径扫描和自动配置:Spring Boot应用通过特定的类路径扫描机制和自动配置功能,能够在启动时识别出应用所依赖的服务和组件,并自动配置它们,大大简化了传统Java应用的配置和部署过程。

 

标签:MF,启动器,SpringBoot,jar,Boot,应用,Spring,运行
From: https://blog.csdn.net/m0_63436028/article/details/139468647

相关文章

  • springboot+vue校园物品私人订制平台【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着校园文化的日益丰富与学生个性化需求的不断增长,传统校园市场已难以满足学生对独特、个性化物品的追求。当前,市场上虽不乏各类电商平台,但针对校园特定环境与学生群体的私人订制服务尚显不足。学生群体对于学习用品、生活用品乃至纪......
  • springboot+vue在线教育平台系统【程序+论文+开题】计算机毕业设计.mp4.baiduyun.p
    系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,教育行业正经历着前所未有的变革。在线教育平台作为这一变革的重要产物,凭借其跨越时空限制、资源丰富多样、学习灵活便捷等优势,逐渐成为人们获取知识、提升技能的重要途径。特别是在全球疫情的影响下,在线教育......
  • springboot+vue疫情访客审批管理系统的设计于与实现【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着全球疫情的持续影响,各类公共场所尤其是学校、企事业单位等对于访客管理的要求日益严格。传统的访客管理模式往往依赖于纸质登记、人工审核,不仅效率低下,且难以有效追踪与管理,增加了疫情传播的风险。因此,开发一套高效、智能、安全的......
  • springboot+vue网上社区团购平台的设计与实现【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,电子商务已成为现代经济不可或缺的一部分,深刻改变着人们的消费习惯。近年来,网上社区团购作为一种新兴的电商模式迅速崛起,以其价格优惠、便捷高效的特点赢得了广大消费者的青睐。社区团购通过整合社区资源,以团......
  • 基于SpringBoot大学失物招领系统的设计与实现(源码+LW+调试和讲解)
     目录:博主介绍:  完整视频演示:系统技术介绍:后端Java介绍前端框架Vue介绍具体功能截图:部分代码参考:  Mysql表设计参考:项目测试:项目论文:​为什么选择我:源码获取:博主介绍:  ......
  • 简单可靠的SpringBoot Jar包启动和更新的Shell脚本
    能用脚本执行,就不用手动nohupjava-jar啦。1.参数说明最终代码实现如下,支持四个参数:●operation:start-启动新包/update-更新包●env_para:指定使用哪个配置文件,如test/prod/dev等●new_jar_package_name:新包的名称,这里必须要求脚本的位置在新,旧包的同一目......
  • 基于Java+SpringBoot+Mysql在线众筹系统功能设计与实现五
    一、前言介绍:1.1项目摘要随着互联网的普及和人们消费观念的转变,众筹作为一种创新的融资方式,逐渐受到社会各界的关注和青睐。它打破了传统融资模式的限制,为初创企业、艺术家、公益项目等提供了更为灵活和便捷的融资渠道。因此,开发众筹系统旨在满足这一市场需求,促进创新项......
  • 基于Java+SpringBoot+Mysql在线众筹系统功能设计与实现六
    一、前言介绍:1.1项目摘要随着互联网的普及和人们消费观念的转变,众筹作为一种创新的融资方式,逐渐受到社会各界的关注和青睐。它打破了传统融资模式的限制,为初创企业、艺术家、公益项目等提供了更为灵活和便捷的融资渠道。因此,开发众筹系统旨在满足这一市场需求,促进创新项......
  • 基于Java+SpringBoot+Mysql在线聊天系统功能设计与实现一
    一、前言介绍:1.1项目摘要随着互联网技术的飞速发展,人们的社交需求日益多样化。传统的面对面交流方式已经无法满足现代人随时随地沟通的需求。因此,开发一个高效、便捷的在线聊天系统成为了满足人们社交需求的重要途径。随着即时通讯技术的不断成熟,如WebSocket、HTTP/2等协......
  • springboot+vue英语学习激励系统【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景在全球化日益加深的今天,英语作为国际交流的重要工具,其学习需求日益迫切。然而,传统英语学习方式往往存在动力不足、效果难以持续等问题,导致学生兴趣缺失,学习效率低下。随着信息技术的飞速发展,个性化、互动化的学习模式逐渐成为可能。因......