首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

spring boot在解压jar时运行JarLauncher

Spring Boot是一个用于简化Spring应用程序开发的框架。它基于Spring框架,提供了一种快速构建独立、可部署的Java应用程序的方式。

在Spring Boot中,可以将应用程序打包为可执行的JAR文件。当运行这个JAR文件时,Spring Boot会自动解压并执行其中的内容。解压和执行JAR文件的过程由JarLauncher类来完成。

JarLauncher是Spring Boot内置的一个启动器,它负责加载和执行JAR文件中的应用程序。它会首先解压JAR文件,然后根据配置文件中的设置,加载应用程序的主类并执行。

使用Spring Boot的JarLauncher有以下优势:

  1. 简化部署:将应用程序打包为可执行的JAR文件,可以方便地部署到各种环境中,无需额外的安装和配置。
  2. 自包含性:JAR文件中包含了应用程序的所有依赖,不需要依赖外部的运行时环境。
  3. 快速启动:JarLauncher会在解压JAR文件后直接加载应用程序的主类,启动速度较快。

Spring Boot的JarLauncher适用于各种场景,特别是以下情况:

  1. 独立应用程序:适用于构建独立的Java应用程序,无需依赖外部的应用服务器。
  2. 微服务架构:适用于构建微服务架构中的各个服务,每个服务都可以打包为一个独立的JAR文件。
  3. 云原生应用:适用于构建云原生应用,可以方便地部署到云平台上。

腾讯云提供了一系列与Spring Boot相关的产品和服务,可以帮助开发者更好地使用和部署Spring Boot应用程序。以下是一些推荐的腾讯云产品和产品介绍链接地址:

  1. 云服务器(CVM):提供了可靠、安全的云服务器实例,用于部署和运行Spring Boot应用程序。详情请参考:https://cloud.tencent.com/product/cvm
  2. 云数据库MySQL:提供了高性能、可扩展的云数据库服务,适用于存储Spring Boot应用程序的数据。详情请参考:https://cloud.tencent.com/product/cdb_mysql
  3. 云原生容器服务(TKE):提供了弹性、可扩展的容器服务,用于部署和管理Spring Boot应用程序的容器化实例。详情请参考:https://cloud.tencent.com/product/tke
  4. 云监控(Cloud Monitor):提供了全面的监控和告警服务,用于监控Spring Boot应用程序的运行状态和性能指标。详情请参考:https://cloud.tencent.com/product/monitoring

通过使用腾讯云的产品和服务,开发者可以更好地支持和扩展Spring Boot应用程序,提高应用程序的可靠性和性能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

当我们的执行 java -jar xxx.jar 的时候底层到底做了什么?

每天早上七点三十,准时推送干货 大家都知道我们常用的 SpringBoot 项目最终在线上运行的时候都是通过启动 java -jar xxx.jar 命令来运行的。...认识 jar 介绍 java -jar 运行原理之前我们先看一下 jar 包里面都包含了哪些内容,我们准备一个 SpringBoot 项目,通过 https://start.spring.io/ 上我们可以快速创建一个...下载后的项目我们 pom 依赖里面可以看到有如下依赖,这个插件是我们构建可执行 jar 的前提,所以如果想要打包成一个 jar 那必须在 pom 有增加这个插件,从 start.spring.io 上创建的项目默认是会带上这个插件的...由此我们先大胆的猜测一下,当我们执行 java -jar 的时候,由于我们的 jar 里面存在 MANIFEST.MF 文件,并且其中包含了 Main-Class 属性且配置了 org.springframework.boot.loader.JarLauncher...因为 JarLauncher 类是 spring-boot-loader 模块,所以我们 pom 文件中增加如下依赖,就可以下载源码进行跟踪了。

71210
  • Spring Boot 核心编程思想-第一部分-读书笔记「建议收藏」

    Spring boot 的FAT Jar是一个独立的归档文件,除了包含传统的 Java Jar资源外,还有依赖的JAR文件, 被java -jar 引导,内部依赖的JAR 文件无法被JDK内建的jar...也就是JarLauncher 和 WarLauncher 本质上 无差别,建议 Spring boot应用使用非传统Web部署,尽可能使用JAR归档的方式。...,启动的时候解压到webapps目录下面;Spring Boot 2.0 的实现,利用嵌入式Tomcat API构建 为 TomcatWebServer Bean,由Sping应用上下文将其引导,...总结:传统的Servlet容器是将压缩的WAR文件解压到对应的目录,然后加载该目录的资源。 Spring Boot 可执行的 WAR文件解压当前文件的前提下依然可以读取其中的资源。...使用Springboot的时候,当我们将 “starter”添加到应用Class path ,其关联的特性随应用启动而自动装载,这是Spring boot的亮点, 它的原理是什么呢?

    86010

    你的springboot starter是如何生效的?

    Spring Boot应用程序启动Spring框架会扫描所有的spring.factories文件,然后根据其中配置的自动配置类,自动应用相应的配置。...1.可运行jar的目录结构 SrpingBoot运行的时候是直接运行的一个jar文件,那么java -jar做了什么事情呢,我们先从项目目录结构分析一下。...通过unzip命令解压jar文件,基本可以得到大致如下的目录结构: spring-boot-demo ├── META-INF │ └── MANIFEST.MF ├── BOOT-INF...用以加载SpringBoot中的jarMANIFEST.MF中的Main-Class中有指定JarLauncher: Manifest-Version: 1.0 Spring-Boot-Classpath-Index...,执行java -jar就会调用JarLauncher中执行main方法,所有应用程序类文件均可通过/BOOT-INF/classes加载,所有依赖的第三方jar均可通过/BOOT-INF/lib加载

    53110

    如何异地加载 Spring Boot 配置文件?

    ) { // 加载配置文件,然后再运行↓将Spring Boot跑起来 runApplication(*args) } 实现 思路有了之后就简单了,一波操作...Idea里运行没问题,跑起来了,但是,当打包成jar包之后就行不通了,会爆异常 Caused by: java.nio.file.FileSystemNotFoundException...,实际上也不会很麻烦,解压在CI构建阶段完成即可。不过要完成项目的启动,必须先找到Spring Boot的启动类。...打开jar包,查看里面的META-INF/MENIFEST.MF文件,可以看到Main-Class是org.springframework.boot.loader.JarLauncher ?...那么我们的启动命令将改成这样就大功告成 java -cp /解压出来的文件夹根目录 org.springframework.boot.loader.JarLauncher redis 127.0.0.1

    78720

    Spring boot 项目打出来的包启动过程

    spring boot 的工程支持打包为jar和war,打包成 jar 或 war 可以直接用 java -jar xxx.jar 来启动,war包也可以放入tomcat等容器中运行。...spring boot项目中,spring boot 提供 为 maven 和 gradle 分别提供了插件增加 repackage 的goal,用于打出 executable 的 fat jar,这个...jar包除了包含了我们的项目编译后的代码和所需的依赖包以外,还有spring-boot-loader 的一些类用于提供类加载器和启动我们自己的main方法,内嵌的依赖jar不需要解压缩和将所有的类都读入内存...Jar Plugin 3.2.0 Main-Class: org.springframework.boot.loader.JarLauncher Main-Class 是 spring 的org.springframework.boot.loader.JarLauncher...:这个文件记录了我们的依赖包的路径,但是这个配置,只有以展开后的运行方式中才会使用。

    1.7K30

    Spring Boot -- 如何获取已加载的JAR文件流

    ,返回值是一个具体的文件路径,原因也很简单,因为Tomcat启动一个webapp时会将对应的war解压,然后针对解压后的路径使用一个单独的类加载器进行加载。..." } 打包成fat jar fat jarSpring Boot引入的一种新格式,其打包后的结构与war包比较类似,但是可以直接执行并不需要先解压再加载,打包后类似目录如下: BOOT-INF/classes...Spring Boot启动原理 打开Spring Boot最终产出的jar包,其MANIFEST.MF文件表明项目的启动入口为org.springframework.boot.loader.JarLauncher...,该类spring-boot-loader模块下,运行时由Spring Boot所提供,因此可以通过maven引入provided类型的依赖从而查看到源码。...文章标题: Spring Boot -- 如何获取已加载的JAR文件流 文章链接: https://mrdear.cn/2019/03/19/framework/spring/jar中获取jar文件流

    5.5K10

    运行jar包的几种打包部署方式

    :my-lib.jar yjmyzz.runnable.jar.DemoApp 程序就能跑起来了 方法二:借助manifest文件 想办法my-jar.jar中添加MANIFEST.MF文件,内容参考下面这样...,如果是maven项目,请参考  maven: 打包可运行jar包(java application)及依赖项处理 一文 方法三:借助spring-boot 插件 前面二种方法,主程序的jar包,与依赖的...jar包是分开的,这在云环境中,上传部署比较麻烦,得传多个文件(或者上传前,先压缩成一个包,再传到服务器上解压),服务器节点多时,操作起来太累。...文件),其原理在于spring-boot插件把所有依赖的jar包,全都打到一个jar包里了。...,此外还增加了Start-Class指向我们真正的程序入口yjmyzz.runnable.jar.DemoApp,换句话说,程序运行时,先调用org.springframework.boot.loader.JarLauncher

    2.2K20

    使用Spring Boot创建docker image

    简介 很久很久以前,我们是怎么创建Spring Boot的docker image呢?...最最通用的办法就是将Spring boot的应用程序打包成一个fat jar,然后写一个docker file,将这个fat jar制作成为一个docker image然后运行。...第三部分是Spring Boot的类加载器,fat jar包的启动是通过Spring BootjarLauncher来创建LaunchedURLClassLoader,通过它来加载lib下面的jar包...第一个问题:我们是用的far jar使用far jar的过程中会有一定的性能问题,肯定要比解压过后的性能要低,尤其是容器环境中运行的情况下,可能会更加突出。...Maven和Gradle中,Spring Boot引入了新的phase:spring-boot:build-image 我们可以直接运行: mvn spring-boot:build-image

    1.5K21

    SpringBoot 核心模块原理剖析

    -jar archive.jar 运行包含嵌套依赖 jarjar 或者 war 文件。...spring-boot-autoconfigure 模块 Spring的出现给我们管理 Bean 的依赖注入提供了便捷,但是当我们需要使用通过 pom 引入的 jar 里面的一个 Bean 时候,还是需要手动...spring-boot-loader 模块则允许我们使用 java -jar archive.jar 方式运行包含嵌套依赖 jarjar 或者 war 文件,它提供了三种类启动器(JarLauncher...首先在打包时候会使用 spring-boot-maven-plugin 插件重写打成的 jar 文件,会设置META-INF/MANIFEST.MF 中的 Main-Class:org.springframework.boot.loader.JarLauncher...接着,运行 java -jar archive.jar ,Launcher 会加载 JarLauncher 类并执行其中的 main 函数,JarLauncher 主要关心构造一个合适的 URLClassLoader

    1.5K90

    SpringBoot从0到实战5:项目是如何通过jar包启动的?

    使用百度翻译如下: 使用-jar参数,后面的参数是jar的文件名称(本例子中是spring-boot-hello-0.0.1-SNAPSHOT.jar),该jar文件中包含的是class和资源文件;...理解Main-Class中的JarLauncher 对于Spring Boot项目的Main-Class中的值是org.springframework.boot.loader.JarLauncher,...那么当我们执行命令:Java-jar spring-boot-hello-0.0.1-SNAPSHOT.jar的时候,那么会找到.jar文件中的Main-Class属性值org.springframework.boot.loader.JarLauncher...IDEA中如何启动SpringBoot应用 IDE里启动SpringBoot应用是最简单的一种情况,依赖的Jar都让IDE放到classpath里了,所以Spring boot直接启动。...总结 Spring Boot应用打包之后,生成一个Fat jar,包含了应用依赖的jar包和Spring Boot loader相关的类。

    14510
    领券