SpringBoot热部署方案
几种热部署方案
- SpringBoot dev tool
- HotSwapAgent
- JRebel
- 阿里的arthas
- 美团的sonic(不公开)
IDEA中使用 HotSwap agent 实现热部署
热部署的插件有很多,像市面上比较流行的 JRebel,或者是 Spring DevTools 都可以实现代码的热部署,HotSwap Agent是一款开源免费的代码热部署组件,这个组件以Agent的方式对代码进行热部署。
注意,JDK 8的热部署依赖DCEVM,而JDK 11的热部署依赖trava-jdk-11-dcevm,因为DCEVM只支持到JDK 8版本后就停止更新了。dcevm 本质上是一个修改过的jvm。jdk提供了一个 altjvm的机制方便jvm开发者来加载自己编绎的jvm,也就是 -XXaltjvm 参数。
实际上install里打包了各个平台上的jvm的动态库。JDK 17则采用Jetbrains Runtime 17 + Hotswap agent jar的形式支持热部署。
如果安装最新的HotSwap Agent,则先删除IDEA自带的agent,在下面目录:
~/Library/Application\ Support/JetBrains/IntelliJIdea2022.1/plugins/hotswap-agent-intellij-plugin/lib/agent
笔者使用后,发现最新版的HotSwap Agent和JDK 17配合问题多多。主要是一大堆Spring Bean创建的错误。
/Library/Java/JavaVirtualMachines/jbr-17.0.5-osx-x64-b653.23/Contents/Home
其它几款
- JRebel:这个号称最强大,但要收费,目前最新版破解还未出
- 服务器链接:http://idea.javatiku.cn/ad4bd706-15a3-4ecf-b3e3-c7b6a64942bf
邮箱地址:随意填写(格式:xxx@xxx.com)
- 服务器链接:http://idea.javatiku.cn/ad4bd706-15a3-4ecf-b3e3-c7b6a64942bf
- arthas:阿里出品,支持远程更新服务器上的某个类,开源,配置使用有一定的门槛
- Sonic:美团内部研发设计的一款用于热部署的IDEA插件。不开源。
参考链接
- http://hotswapagent.org/mydoc_quickstart-jdk17.html
- https://github.com/JetBrains/JetBrainsRuntime (用于替换openJDK)
- https://github.com/spring-projects-experimental/spring-boot-thin-launcher
- https://github.com/TravaOpenJDK
- https://github.com/dcevm (已经停止更新了)
- 美团热部署实践
- https://github.com/meituan
- https://alibaba.github.io/arthas/index.html
- http://hengyunabc.github.io/arthas-online-hotswap/
- https://arthas.aliyun.com/
- HotswapAgent文档:https://github.com/HotswapProjects/HotswapAgent
- IDEA 插件:https://github.com/dmitry-zhuravlev/hotswap-agent-intellij-plugin
总结
热部署不是件容易的事情,希望将来JDK能自带热部署组件。
SpringBoot热部署方案相关推荐
- 常用注解[spring 的 java 配置] ||springboot 热部署
常用注解[spring 的 java 配置] 回顾学过的 spring 的注解 @Controller @RestController @Service @Repository @Component ...
- SpringBoot 热部署
SpringBoot 热部署 最近在讲springcloud微服务,中间使用到springboot开发代码时,经常因为一点小的改动就需要重启,虽然重启也很快.于是就开始折腾热部署,下面记录如下: 一. ...
- SpringBoot热部署加持
概述 进行SpringBoot的Web开发过程中,我们很多时候经常需要重启Web服务器才能保证修改的 源代码文件.或者一些诸如xml的配置文件.以及一些静态文件生效,这样耗时又低效.所谓的热部署指的是 ...
- 超详细springboot热部署
超详细springboot热部署 ①修改依赖 <!--热部署--> <dependency><groupId>org.springframework.boot< ...
- SpringBoot热部署环境搭建和原理分析
SpringBoot热部署环境搭建 插件会监控 classpath的资源变化 对类加载采用了两种类加载器(只重启开发人员编写的代码部分) 一. 现象 开发项目过程中,修改了某些代码后需要本地验证时,需 ...
- idea中配置Springboot热部署
idea中配置Springboot热部署 1 pom.xml文件 注:热部署功能spring-boot-1.3开始有的 <!--添加依赖--> <dependency>< ...
- Springboot 热部署----热部署插件的使用
热部署有什么用?什么是热部署? 在实际开发中,我们修改某些代码逻辑功能或页面后都需要重启应用,这无形中降低了开发效率.因此,热部署出来了. 热部署就是指当我们修改代码后,服务能自动重启加载新修改的内容 ...
- SpringBoot热部署--bunny0728
bunny0728–SpringBoot热部署 第一步: <!--热部署配置--> <dependency> <groupId>org.springframewor ...
- springboot热部署该怎么实现?springboot热部署实现方式
Spring家族博大精深,我之前讲过该如何搭建一个简单的springboot项目,这次我们就来深入探讨一下springboot,比如,你们知道springboot该如何搭建热部署吗?下面就来为大家讲解 ...
最新文章
- lpq命令--Linux命令应用大词典729个命令解读
- 理解 iOS 和 macOS 的内存管理
- VC++ 常见编译错误
- 形态数轴的单点多值现象
- 经典面试题|讲一讲JVM的组成
- 即时通讯飞鸽传书民意soft需求
- net 自定义表单的设计
- 红橙Darren视频笔记setContentView源码分析 xml加载的过程
- 重大要素改变中的机会选择包括_重大要素改变中的机会选择包括:
- 自动拷贝远程服务器文件夹,怎么从远程服务器上拷贝文件夹
- 如何经营好自己的朋友圈
- 【考研数学高数部分】无穷级数
- 世界杯海信再出圈,三星:“谈不上愉悦”
- iPhone照片太多,如何快速搜索照片?
- matlab用ifft,ifft(matlab中ifft是什么意思)
- 史上最全的前端资源汇总(下)
- my name is van
- linux系统下html中文乱码
- Vue3 中的 CSS 功能
- “伟禄亚太Realord AP”正式上线,机遇与挑战并存