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

SpringBoot - 探究Spring Boot应用是如何通过java -jar 启动

使用-jar参数,后面的参数是的jarspring-0.0.1-SNAPSHOT.jar】,该jar文件包含是class和资源文件; 在manifest文件中有Main-Class定义;Main-Class...---- 打包插件 事实上,Java没有提供任何标准方式来加载嵌套jar文件 (jar包含jar ,即Spring Boot fat jarSpring Boot 默认打包插件如下:...获取其中所有的资源目标,取得其Url,这些URL作为参数,构建了一个URLClassLoader。...(2)以第一步构建ClassLoader加载MANIFEST.MF文件Start-Class指向业务类,并且执行静态方法main。进而启动整个程序。...通过spring-boot-plugin 生成了MANIFEST.MF , main-class 指定运行java -jar主程序把依赖jar文件 打包在fat jar. ?

1.4K30

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

MANIFEST.MF; 2、把依赖jar进行打包; 在jar里打包进去了别的jar,这样jar成为fat jar,也叫作uber jar。...使用百度翻译如下: 使用-jar参数,后面的参数是jar文件名称(本例子spring-boot-hello-0.0.1-SNAPSHOT.jar),该jar文件包含是class和资源文件;在...所以对于Spring Boot项目中依赖jar文件,java并无能为力,对于-jar底层是找到一个Main-Class属性值,对于Spring Boot项目要启动,有两个核心事情就要去做了: (...IDEA如何启动SpringBoot应用 在IDE里启动SpringBoot应用是最简单一种情况,依赖Jar都让IDE放到classpath里了,所以Spring boot直接启动。...总结 Spring Boot应用打包之后,生成一个Fat jar,包含了应用依赖jarSpring Boot loader相关类。

9110
您找到你想要的搜索结果了吗?
是的
没有找到

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

xml配置 2、Spring Boot 具有一套固化视图,该视图用于构建生产级别的应用 我理解是通过maven 管理 Starter,Spring Boot平台依赖第三方类库进行固化,减少管理它们烦恼...:如果要构建Spring Boot应用可执行JAR,则需要添加 spring-boot-maven-plugin 插件配置到 pom 文件。...Spring boot FAT Jar是一个独立归档文件,除了包含传统 Java Jar资源外,还有依赖JAR文件, 被java -jar 引导,内部依赖JAR 文件无法被JDK内建jar...特性:固化“Starter”依赖,简化构建 。...总结:传统Servlet容器是压缩WAR文件解压到对应目录,然后在加载该目录资源Spring Boot 可执行 WAR文件在不解压当前文件前提下依然可以读取其中资源

80410

Spring Boot系列 – 1. 简介

使用Spring Boot,只需20行左右代码即可生成一个基本Spring Web应用,并且内置了tomcat,构建fat Jar通过Java -jar就可以直接运行。 ...1.无需手动管理依赖jar版本 Spring boot通过spring boot starter项目管理其提供所有依赖版本,当升级spring boot,这些依赖版本也会随之升级。...3.可执行jar Spring Boot默认应用打包成一个可执行jar文件,构建成功后使用java -jar命令即可运行应用。 ...Java并没有提供任何标准方式来加载jar内嵌jar。一般开发者使用影子jar技术来解决这种问题。一个影子jar只是简单所有jar类打包到一个单独超级jar。...Spring Boot启动相应自动配置。

70520

使用Spring Boot创建docker image

最最通用办法就是Spring boot应用程序打包成一个fat jar,然后写一个docker file,这个fat jar制作成为一个docker image然后运行。...Spring bootfat jar分为三个部分,第一部分就是BOOT-INF, 里面的class目录放是我们自己编写class文件。而lib目录存放是项目依赖其他jar。...第三部分是Spring Boot类加载器,fat jar启动是通过Spring BootjarLauncher来创建LaunchedURLClassLoader,通过它来加载lib下面的jar...但是如果使用fat jar,即使我们只修改了我们自己代码,也会导致整个fat jar重新更新,从而影响docker image构建速度。...– SNAPSHOT依赖jar spring-boot-loader – Spring bootclass loader文件 application – 应用程序class和resources

1.5K21

spring boot 使用maven和fat jarwar运行应用程序对比

使用maven和fat jar/war运行应用程序对比 简介 上篇文章我们介绍了Spring bootfat jar/warjar/war都可以使用 java -jar 命令来运行,而maven...Spring Boot Maven Plugin 上篇文章我们提到了Spring Boot Maven Plugin,通过使用该插件,可以有效提高部署效率,并打包成为fat jar/war。...在打包成fat jar/war时候,背后实际上做了如下事情: 管理了classpath配置,这样我们在运行java -jar时候不用手动指定-cp 。...使用了自定义ClassLoader来加载和定位所有的外部jar依赖。并且所有的依赖jar已经被包含在这个fat里面了。...如果想打包成fat jar/war, 需要使用Maven Spring Boot plugin,如下所示,否则打包出来jar并不包含外部依赖

1.4K10

SpringBoot系列-- jar可执行原理

spring-boot-maven-plugin SpringBoot 可执行jar又称fat jar ,是包含所有第三方依赖 jar jar 嵌入了除 java 虚拟机以外所有依赖,是一个...普通插件maven-jar-plugin生成spring-boot-maven-plugin生成之间直接区别,是fat jar主要增加了两部分,第一部分是lib目录,存放是Maven依赖.../‘,就可以表示jar in jarjar in directory、fat jar资源了。...其二,如果在这个机制下,由于fat jar依赖各个第三方jar文件,并不在程序自己classpath下,也就是说,如果我们采用双亲委派机制的话,根本获取不到我们所依赖jar,因此我们需要修改双亲委派机制查找...依赖spring-boot-loader和spring-boot,使用 "!

90310

高薪必备一些Spring Boot高级面试题

当项目足够复杂,管理依赖可能会变成一场噩梦,因为涉及组件太多了。 这就是Spring Boot starter就派上用场了。...非官方starter名称在前,mybatis-spring-boot-starter。这种命名模式使得查找启动器变得很容易,尤其是在使用支持按名称搜索依赖关系IDE。...有了这个插件,我们将在执行包阶段后得到一个fat JAR 。此JAR包含所有必需依赖,包括嵌入式服务器。因此,我们不再需要担心配置外部服务器。...然后我们可以像运行普通可执行JAR一样运行应用程序。 请注意,必须将pom.xml文件packaging元素设置为 jar 才能构建JAR文件: ? 如果我们不包含这个元素,它也默认为jar。...如果我们想要构建WAR文件,请将包装 元素更改为war: ? 并将容器依赖关系从打包文件删除: ? 执行Maven 阶段后,我们拥有一个可部署WAR文件。 ?

1.7K10

公司这种打包启动方式,我简直惊呆了!

大家都知道,SpringBoot应用最终会打出一个Fat Jar, 里面包含了用到全部依赖,启动也非常简单,java -jar xxx.jar即可。...但是我们公司打出最终依赖挪到了外部,然后启动时候通过loader.path指定依赖位置,java -Dloader.path=libs -jar xxxx方式启动,也能够启动成功。...1. spring-boot-maven-plugin 该插件是spring boot官方提供一个打包插件,主要用来打出fat jar,并且提供了支持java -jar xxx.jar方式启动。...: 解压该安装: 打开libs目录: 启动方式解析 现在我们已经按照自己想要结构打出包了,那如何在启动时候加载libs目录依赖呢?...Spring Boot 可执行 jar 主要入口点;关注公众号:码猿技术专栏,回复关键词:1111 获取阿里内部java性能调优手册;它是 Spring Boot jar 文件实际 Main-Class

35820

公司这种打包启动方式,我简直惊呆了!

大家好,我是不才陈某~大家都知道,SpringBoot应用最终会打出一个Fat Jar, 里面包含了用到全部依赖,启动也非常简单,java -jar xxx.jar即可。...图片但是我们公司打出最终依赖挪到了外部,然后启动时候通过loader.path指定依赖位置,java -Dloader.path=libs -jar xxxx方式启动,也能够启动成功...1. spring-boot-maven-plugin该插件是spring boot官方提供一个打包插件,主要用来打出fat jar,并且提供了支持java -jar xxx.jar方式启动。...:图片解压该安装:图片打开libs目录:图片启动方式解析现在我们已经按照自己想要结构打出包了,那如何在启动时候加载libs目录依赖呢?...Spring Boot 可执行 jar 主要入口点,它是 Spring Boot jar 文件实际 Main-Class,用于设置适当 URLClassLoader 并最终调用Spring Boot

87470

公司这种打包启动方式,我简直惊呆了

但是我们公司打出最终依赖挪到了外部,然后启动时候通过loader.path指定依赖位置,java -Dloader.path=libs -jar xxxx方式启动,也能够启动成功。...spring-boot-maven-plugin 该插件是spring boot官方提供一个打包插件,主要用来打出fat jar,并且提供了支持java -jar xxx.jar方式启动。...官网地址:docs.spring.io/spring-boot…。 我们需要用这个插件,因为只有它可以打出支持启动jar,但是打出又不能有依赖,该怎么做呢?...: 解压该安装: 打开libs目录: 启动方式解析 现在我们已经按照自己想要结构打出包了,那如何在启动时候加载libs目录依赖呢?...Spring Boot 可执行 jar 主要入口点,它是 Spring Boot jar 文件实际 Main-Class,用于设置适当 URLClassLoader 并最终调用 Spring Boot

50210

Spring boot 项目打出来启动过程

spring boot 工程支持打包为jar和war,打包成 jar 或 war 可以直接用 java -jar xxx.jar 来启动,war也可以放入tomcat等容器运行。...jar除了包含了我们项目编译后代码和所需依赖以外,还有spring-boot-loader 一些类用于提供类加载器和启动我们自己main方法,内嵌依赖jar不需要解压缩和所有的类都读入内存...:这个文件记录了我们依赖路径,但是这个配置,只有在以展开后运行方式才会使用。...默认构建docker镜像不会将我们fat jar 分成多层,要分成多层需要在spring-boot-maven-plugin 插件里开启 configuration > layers > enabled...表示目录资源使用org.springframework.boot.loader.archive.JarFileArchive 表示Jar文件资源使用 jar in jar 路径识别: org.springframework.boot.loader.jar.JarURLConnection

1.6K30

Spring Boot 2.3.0正式发布:优雅停机、配置文件位置通配符新特性一览

更改某些依赖最低版本要求 核心依赖升级 三方库依赖升级 Spring Data Neumann升级带来变化 关于Validation 移除一些maven插件 支持Java14 Docker支持 Fat...官方说明:完成迁移后,请确保从项目的依赖删除properties-migrator这个模块。...特点说明:jar外,jar外,jar外,放在内部(比如resource目录下是没有此特针),下面有示例证明 简单说,如果你有MySql配置和Redis配置的话,你就可以把他们分开来放置,...---- Docker支持 在Maven和Gradle插件添加了对构建包含分层内容jar文件支持。分层根据jar内容更改频率来分隔它们。这种分离允许更有效地构建Docker映像。...---- Fat Jar支持优化 用Maven和Gradle构建Fat jar现在包括一个索引文件。当jar被分解,这个索引文件用于确保类路径顺序与直接执行jar相同。

1.4K20

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

/commons-lang3-3.7.jar" } 打包成fat jar fat jarSpring Boot引入一种新格式,其打包后结构与war比较类似,但是可以直接执行并不需要先解压再加载,...打包后类似目录如下: BOOT-INF/classes – 用户代码 BOOT-INF/lib –依赖第三方架 org/springframewora/boot/loader – Fat jar启动核心...,表示当前根架位置,第二部分/BOOT-INF/lib/commons-lang3-3.7.jar!/所需要jar在根架位置路径。 如何读取jar?...,该类在spring-boot-loader模块下,运行时由Spring Boot所提供,因此可以通过maven引入provided类型依赖从而查看到源码。...Handler实现openConnection方法,因此当在项目代码想要读取jar in jar格式,则可以用该Handler进行资源读取。

5.4K10

Spring Boot从零入门2_核心模块详述和开发环境搭建

Spring Boot Starter主要职责是一组常见或相关依赖组合为单个依赖,从而可以自动化导入全部依赖。...file(spring-transaction-xx.jar) 最后,我们需要在构建文件定义很多依赖,对于开发人员而言,这是非常繁琐且繁琐任务,而且它还会增加我们构建文件大小。...Spring Boot Starter组件所有相关jar组合到单个jar文件,因此我们只需要将jar文件依赖添加到我们构建文件。...当我们spring-boot-starter-web jar文件依赖添加到我们构建文件Spring Boot Framework将自动下载所有必需jar并添加到我们项目类路径,如下图所示...Grape是嵌入GroovyJAR依赖管理器。Grape让我们快速将maven信息库依赖添加到我们项目类路径,以减少构建文件定义。

1.1K20

SpringBoot Docker 认证指南(上)

您可以通过入口点移动到脚本(run.sh前面显示示例)或在入口点显式创建 shell 来解决此问题。...然而,更好 Dockerfile由于 JAR 本身打包方式,Spring Boot fat JAR 自然有“层”。如果我们先解包,它已经分为外部依赖和内部依赖。...您还可以 Spring Boot fat 复制JarLauncher到映像并使用它来运行应用程序。它可以工作,您不需要指定主类,但启动时会慢一些。...Spring Boot 层索引从 Spring Boot 2.3.0 开始,使用 Spring Boot Maven 或 Gradle 插件构建 JAR 文件在 JAR 文件包含层信息。...这在某些环境可能非常有用——例如,您需要与不了解 Java 的人共享您代码。实验功能Docker 18.06 带有一些“实验性”特性,包括缓存构建依赖方法。

1.3K20
领券