springboot 打成的jar包为什么能直接运行?

devtools/2024/9/23 1:09:25/

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应用的配置和部署过程。

Spring Boot通过精心设计的打包流程和启动器类,使得生成的jar包可以直接作为一个独立的应用程序运行,极大地简化了部署和运维复杂度。

详解


http://www.ppmy.cn/devtools/35256.html

相关文章

Docker基本操作 挂载数据卷

在创建一个容器的时候让容器挂载到一个数据卷: 命令:docker run --name mn -p 80:80 -v html:/usr/share/nginx/html -d nginx 这里的数据卷如果没有提前创好会自动创建 下边是命令解析 将容器挂载到一个数据卷之后 可以在查看数据卷的目录 在数据卷的目录可以找到容器的内容…

ld.exe: unrecognized option ‘--major-image-version‘

问题:在windows环境使用cmakemingw32gcc交叉工具链报错 原因:将project指令放到了set(CMAKE_SYSTEM_NAME Linux)之前 下面为CMakeLists.txt正确写法: cmake_minimum_required(VERSION 3.0)#set(CMAKE_C_COMPILER_WORKS 1)#set(CMAKE_CXX_C…

Android 振动和触感反馈功能失效问题分析

文章目录 一、 可以先通过adb来确定是否有打印Log,查看中相关的按键振动事件是否有效二、 适配按键事件三、延长振动时长 在Android13的项目(MTK平台)中遇到这样一个问题,在设置 - 提示音和振动 - 振动和触感反馈 - 打开按触反馈,但是按键没有…

P8800 [蓝桥杯 2022 国 B] 卡牌

P8800 [蓝桥杯 2022 国 B] 卡牌 分析 “最多” -- 二分 1.二分区间(凑齐的卡牌套数): l:a[]min;r:(a[]b[])max 2.check(x): (1)for循环内: 判断x - a[i…

如何用中医揿针治疗肩周炎?

点击文末领取揿针的视频教程跟直播讲解 首先我们先来了解什么是肩周炎 【中医辨证】 肩周炎中医称之为漏肩风、锁肩风、肩凝症等,将肩周炎的一系列症状归纳为痹证的范畴,故又有肩痹、肩胛周痹等病名。 在中医古典医籍《素问痹论》中有骨痹、筋痹、脉…

【leetcode面试经典150题】78.二叉树中的最大路径和(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…

【机器学习第二期】MATLAB实现随机森林法

随机森林(Random Forest, RF) 1 原理1.1 重采样方法(Bootstrap resampling method)1.2 特征重要性方法排列重要性法(Permutation Importance method)2 MATLAB相关函数:TreeBagger3 案例:干旱驱动因子分析3.1 案例说明结果变量(Outcome variable)解释变量类别3.2 基于…

如何在Mac安装win虚拟机

1、下载VMware软件 下载地址VMware Fusion 13 2、下载win镜像 win10镜像安装地址 我选的64位 3、打开VMware软件安装镜像 选择从光盘或映像中安装 然后把我们刚刚下载的镜像文件拖到提示的位置上 托进去就变成了这个样子 然后点击继续,我选择的是win10教育…