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

使用spring boot创建fat jar APP

介绍 在很久很很久以前,我们部署web程序方式是怎么样呢?配置好服务器,将自己写应用程序打包成war包,扔进服务器中指定目录里面。当然免不了要配置一些负责xml和自定义一些servlet。...现在有了spring boot,一切都变了,我们可以将web应用程序打包成fat jar包,直接运行就行了。 本文将会关注于怎么使用Spring Boot创建一个fat jar包。...如果你要在服务器上面永久运行该服务,即使登录用户退出服务器,则可以使用nohup命令: nohup java -jar fat jarfat war 在上面的例子中...,所有的依赖jar包都会被打包进入这一个fat jar中,如果你使用了tomcat,那么tomcat也会被打包进去。... 如果你没有spring-boot-starter-parent继承,那么你需要将main class添加到maven plugin中:

90010

Spring Boot - 瘦身大作战:优雅应对Spring Boot Fat Jar

Fat Jar 【pom.xml】 <?xml version="1.0" encoding="UTF-8"?...Boot任何Launcher NONE,将所有的依赖库打包,但是不打包Spring Boot任何Launcher 打包后观察下 jar大小 和 里面的内容 重点关注下Main-Class.../lib -jar artisan-test-thin-boot-jar.jar 验证 通过启动参数loader.path配置外置依赖包加载路径。...它们目的是目录嵌套jar文件或war文件(而不是在类路径中显式文件)加载资源(.class文件等)。 对于JarLauncher和WarLauncher,嵌套路径是固定。...可以通过在loader.properties(这是目录,归档文件或归档文件中目录逗号分隔列表)中设置一个称为LOADER_PATH或loader.path环境变量来添加其他位置 概括一下: 启动器

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

【SpringBoot】四种读取 Spring Boot 项目中 jar 包中 resources 目录文件

前言 在SpringBoot应用中,经常需要读取打包在jar包中资源文件,比如配置文件、模板文件等。...这些资源文件通常放在src/main/resources目录下,在打包成jar包后,它们会被存储在jar目录下。本文将介绍4种在SpringBoot中读取这些资源文件方法。...部署后,项目是通过打成 jar 包运行,里面的文件是没有实际路径(只有相对于项目名相对路径)。...classpath 路径(即:src 或 resources 路径下)下查找文件,但它路径前需要加 “/” ,这个是跟读取文件与当前.class 文件位置有关。...,包括jar包中资源文件中读取

30210

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

spring boot项目中,spring boot 提供 为 maven 和 gradle 分别提供了插件增加 repackage goal,用于打出 executable fat jar,这个...war 结构 fat jar 下面的WEB-INF下多出来一个 lib-provided 目录用来防 embed tomcat jar Spring-Boot-Classpath-Index 作用...=true 不分层时候就是一个fat jar 放到容器中,如果是分层后,就会将fat jar文件根据此 layers.idx 中 定义,提取各层文件,然后底层到高层分四次加入到 Image...指定位置读取文件 类加载器: org.springframework.boot.loader.LaunchedURLClassLoader 加载第一层jar中类和嵌套jar类加载ClassLoader...2、筛选出Archive中 Archive(BOOT-INF/classes目录BOOT-INF/lib下每个jar ,如果是war包,则是WEB-INF/classes目录和WEB-INF/

1.6K30

spring boot应用启动原理分析

demo-0.0.1-SNAPSHOT.jarspring boot maven插件生成jar包,里面包含了应用依赖,以及spring boot相关类。下面称之为fat jar。...spring boot应用启动流程总结 看到这里,可以总结下Spring Boot应用启动流程: spring boot应用打包之后,生成一个fat jar,里面包含了应用依赖jar包,还有Spring.../spring-boot-loader JarFile URL扩展 Spring boot能做到以一个fat jar来启动,最重要一点是它实现了jar in jar加载方式。.../7u40-b43/sun/misc/URLClassPath.java#506 在IDE/开放目录启动Spring boot应用 在上面只提到在一个fat jar里启动Spring boot应用过程...还有一种情况是在一个开放目录下启动Spring boot启动。所谓开放目录就是把fat jar解压,然后直接启动应用。

1.8K30

SpringBoot系列-- jar可执行原理

spring-boot-maven-plugin SpringBoot 可执行jar包又称fat jar ,是包含所有第三方依赖 jar 包,jar 包中嵌入了除 java 虚拟机以外所有依赖,是一个...普通插件maven-jar-plugin生成包和spring-boot-maven-plugin生成包之间直接区别,是fat jar中主要增加了两部分,第一部分是lib目录,存放是Maven依赖...fat jar //目录结构 ├─BOOT-INF │ ├─classes │ └─lib ├─META-INF │ ├─maven │ ├─app.properties │ ├─MANIFEST.MF...├─data ├─jar └─util 也就是说想要知道fat jar是如何生成,就必须知道spring-boot-maven-plugin...我们需要搞懂是关键代码,以及涉及到知识点。 我Maven自定义插件开始进行追踪,巩固了对Maven知识点,在这个过程中甚至了解到JDK对jar读取是有提供对应工具类。

90110

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

" } 打包成fat jar fat jarSpring Boot引入一种新格式,其打包后结构与war包比较类似,但是可以直接执行并不需要先解压再加载,打包后类似目录如下: BOOT-INF/classes...对于非jar in jar形式,其获取到目录是一个真是的物理文件路径,因此可以直接使用File读取,从而拿到文件流,这里不重点关注。...对于jar in jar因为并不是规范文件路径,因此无法使用File直接读取,那么该怎么读呢?要解决这个问题需要先了解Spring Boot是怎么做....[protocol].Handler,因此Spring Boot注册为org.springframework.boot.loader.jar.Handler这个jar协议扩展处理器,其在读取资源时会调用...利用Handler读取jar Spring Boot启动原理关键点是实现了jar in jar协议处理器org.springframework.boot.loader.jar.Handler,读取主要功能为

5.4K10

Spring Boot 入门到实践系列教程(1)- 课程目录

简介 Spring Boot 执行器 快速构建一个Spring Boot Web应用程序 如何更改Spring Boot默认端口 修改Spring Boot上下文路径 Spring Boot@...Spring Boot - 高级特性 Spring Boot:配置主类 Spring迁移到Spring Boot 使用Spring Boot加载初始数据快速指南 如何定义Spring Boot...使用Spring Boot创建Fat Jar应用程序 Spring Boot自定义信息 SpringBootServletInitializer快速入门 Spring Boot Exit Code...关闭Spring Boot应用程序 Spring Boot命令行参数 使用自定义父级进行Spring Boot依赖关系管理 使用Swagger生成Spring Boot REST客户端 在Spring...入门 GraphQL和Spring Boot入门 Apache Camel with Spring Boot Spring Boot应用程序中DynamoDB 使用Jasypt进行Spring Boot

1K30

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

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

1.4K10

使用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依赖jarspring-boot-loader – Spring bootclass loader文件 application – 应用程序class和resources

1.5K21

spring boot + embed tomcat + standalone jar内存泄露问题

发生故障时,用top -m 看java进程占用内存并不算高,而且spring bootacurator端点监控,以及jvm内存监控都在正常值范围内,刚开始怀疑是jvm参数设置不合理,调整了G1垃圾收集器各种参数组合...用dump导出来分析,线程数、大对象啥都不高,遂怀疑是spring cloud坑。...攀墙出去google了下,无意搜索" spring boot memory leak",发现有些人遇到了类似的问题,共同点都是embed tomcat + standalone jar运行方式,于是怀着试一试心理...附,更换方法: compile('org.springframework.boot:spring-boot-starter-web') { exclude module: "spring-boot-starter-tomcat..." } compile('org.springframework.boot:spring-boot-starter-undertow')   注:其它jar包也有可能隐式依赖了tomcat

1.3K60

Spring Boot读取配置文件几种方式

Spring Boot获取文件总的来说有三种方式,分别是@Value注解,@ConfigurationProperties注解和Environment接口。...value():指定配置文件 encoding():指定编码,因为properties文件编码默认是ios8859-1,读取出来是乱码 factory():自定义解析文件类型,因为该注解默认只会加载properties...文件,如果想要指定yml等其他格式文件需要自定义实现。...二、Environment读取文件 配置文件我们继续用上面的两个,定义一个类去读取配置文件 ?...经验与坑 properties文件默认使用是iso8859-1,并且不可修改 yml文件加载顺序高于properties,但是读取配置信息时候会读取后加载 @PropertySource注解默认只会加载

1.2K30
领券