不想太重?让springboot应用瘦下来的秘籍

简介: 本文介绍如何对springboot项目进行瘦身的思路,同时给出了具体操作的步骤例子连接,对你在项目生产过程中的巨无霸jar应该有很好的作用。

     背景:常规的应用开发中,不论是单体架构、微服务架构、甚至是服务网格架构,如果你的应用类型采用的是springboot或者springcloud来构建,最终以jar包的方式运行,基本上都会遇到jar包比较大,占用空间比较大的困扰。如果是内网部署,遇到动辄几百MB的升级包,运维的同学直接丢一个眼神给你,如果在外网云环境,那令人着急的带宽分分中会让你生无可恋。此刻boss来个三连击,那种痛,谁碰到谁知晓。

     那么,如何避免只修改一行代码就必须要全量打包,不受运维同学的脸色和带宽的压力呢?解决方案是有的。研发的同学可以减少jar的大小。如果把jar从200MB减少为200KB,这速度爽不爽。

    本文分享基于Maven的Springboot项目构建的一般瘦身策略,如果有更高效的方式请一定留言告诉我。要想解决问题,先看下执行mvn clean package后,生成的jar包包含什么东西。以下图为例:

image.png

     在jar包不仅包含了自己编写的应用代码,而且还包含了依赖的外部资源的jar。现在随便一个工程下来,依赖的jar都以MB为计算单位。所以知道了问题之所在,就好解决了。应对之道就是将应用程序编辑的class文件和外部依赖的jar分开。

image.png

具体解决实例,包括如何进行配置,本文就不再赘述,这里贴出一些博友分享的实战例子,您可以拿去参考使用。有很详细的配置,以及针对单体架构和多模块依赖架构的优化jar包解决方案。

1、http://www.javashuo.com/article/p-kjmbkjnx-ky.html

2、https://www.liaoxuefeng.com/wiki/1252599548343744/1304267002478625 (廖雪峰的学习网站)

3、http://blog.itpub.net/69900357/viewspace-2686554/  (我把SpringBoot项目从18.18M瘦身到0.18M,部署起来真省事!)。

目录
相关文章
|
运维 监控 Java
如何在阿里云serverless发布一个Springboot应用
本文主要很大家分享了如何在阿里云serverless发布一个Springboot应用,通过实际的操作感受serverless对于未来研发流程的巨大变革。
|
jenkins Java 持续交付
Jenkins + Docker + Gitee自动化部署SpringBoot应用
阅读本篇文章需要你有Docker、Git、SpringBoot、Linux等基础知识。
1249 0
Jenkins + Docker + Gitee自动化部署SpringBoot应用
|
存储 数据可视化 Java
SpringBoot应用整合并使用Docker安装ELK实现日志收集
SpringBoot应用整合并使用Docker安装ELK实现日志收集
SpringBoot应用整合并使用Docker安装ELK实现日志收集
|
存储 JSON Prometheus
Prometheus+SpringBoot应用监控全过程详解
1. Prometheus是什么 Prometheus是一个具有活跃生态系统的开源系统监控和告警工具包。一言以蔽之,它是一套开源监控解决方案。
|
机器学习/深度学习 IDE Java
springboot 应用迁移
快速学习 springboot 应用迁移
springboot 应用迁移
|
弹性计算 网络协议 Java
函数计算部署SpringBoot应用
通过模板创建以及仓库导入应用来部署一个SpringBoot应用
2397 2
函数计算部署SpringBoot应用
阿里出品!SpringBoot应用自动化部署神器,IDEA版Jenkins?
CloudToolkit简介 CloudToolkit是阿里出品的一款IDEA插件,通过它我们可以更方便地实现自动化部署,其内置的终端工具和文件上传功能,即使用来管理服务器也非常方便!这款IDEA插件不仅功能强大,而且完全免费! 安装 CloudToolkit的安装是非常简单的,直接在IDEA的插件市场中搜索Cloud Toolkit然后进行安装即可。
|
Java Linux Maven
《SpringBoot系列六》:SpringBoot应用jar包启动原理
SpringBoot Jar包启动原理? SpringBoot Jar包目录结构? JarLauncher的运行原理?
1260 0
《SpringBoot系列六》:SpringBoot应用jar包启动原理
|
Java 应用服务中间件 Maven
《SpringBoot系列五》:SpringBoot应用分类?默认类型如何推导出(deduceFromClasspath())?
《SpringBoot系列五》:SpringBoot应用分类?默认类型如何推导出(deduceFromClasspath())?
252 0
《SpringBoot系列五》:SpringBoot应用分类?默认类型如何推导出(deduceFromClasspath())?
|
消息中间件 缓存 Java
【SpringBoot2 从0开始】如何编写 springboot 应用?
【SpringBoot2 从0开始】如何编写 springboot 应用?
【SpringBoot2 从0开始】如何编写 springboot 应用?