几种热部署方案

  • 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)
  • 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热部署方案相关推荐

  1. 常用注解[spring 的 java 配置] ||springboot 热部署

    常用注解[spring 的 java 配置] 回顾学过的 spring 的注解 @Controller @RestController @Service @Repository @Component ...

  2. SpringBoot 热部署

    SpringBoot 热部署 最近在讲springcloud微服务,中间使用到springboot开发代码时,经常因为一点小的改动就需要重启,虽然重启也很快.于是就开始折腾热部署,下面记录如下: 一. ...

  3. SpringBoot热部署加持

    概述 进行SpringBoot的Web开发过程中,我们很多时候经常需要重启Web服务器才能保证修改的 源代码文件.或者一些诸如xml的配置文件.以及一些静态文件生效,这样耗时又低效.所谓的热部署指的是 ...

  4. 超详细springboot热部署

    超详细springboot热部署 ①修改依赖 <!--热部署--> <dependency><groupId>org.springframework.boot< ...

  5. SpringBoot热部署环境搭建和原理分析

    SpringBoot热部署环境搭建 插件会监控 classpath的资源变化 对类加载采用了两种类加载器(只重启开发人员编写的代码部分) 一. 现象 开发项目过程中,修改了某些代码后需要本地验证时,需 ...

  6. idea中配置Springboot热部署

    idea中配置Springboot热部署 1 pom.xml文件 注:热部署功能spring-boot-1.3开始有的 <!--添加依赖--> <dependency>< ...

  7. Springboot 热部署----热部署插件的使用

    热部署有什么用?什么是热部署? 在实际开发中,我们修改某些代码逻辑功能或页面后都需要重启应用,这无形中降低了开发效率.因此,热部署出来了. 热部署就是指当我们修改代码后,服务能自动重启加载新修改的内容 ...

  8. SpringBoot热部署--bunny0728

    bunny0728–SpringBoot热部署 第一步: <!--热部署配置--> <dependency> <groupId>org.springframewor ...

  9. springboot热部署该怎么实现?springboot热部署实现方式

    Spring家族博大精深,我之前讲过该如何搭建一个简单的springboot项目,这次我们就来深入探讨一下springboot,比如,你们知道springboot该如何搭建热部署吗?下面就来为大家讲解 ...

最新文章

  1. lpq命令--Linux命令应用大词典729个命令解读
  2. 理解 iOS 和 macOS 的内存管理
  3. VC++ 常见编译错误
  4. 形态数轴的单点多值现象
  5. 经典面试题|讲一讲JVM的组成
  6. 即时通讯飞鸽传书民意soft需求
  7. net 自定义表单的设计
  8. 红橙Darren视频笔记setContentView源码分析 xml加载的过程
  9. 重大要素改变中的机会选择包括_重大要素改变中的机会选择包括:
  10. 自动拷贝远程服务器文件夹,怎么从远程服务器上拷贝文件夹
  11. 如何经营好自己的朋友圈
  12. 【考研数学高数部分】无穷级数
  13. 世界杯海信再出圈,三星:“谈不上愉悦”
  14. iPhone照片太多,如何快速搜索照片?
  15. matlab用ifft,ifft(matlab中ifft是什么意思)
  16. 史上最全的前端资源汇总(下)
  17. my name is van
  18. linux系统下html中文乱码
  19. Vue3 中的 CSS 功能
  20. “伟禄亚太Realord AP”正式上线,机遇与挑战并存

热门文章

  1. IEC61499和PLCopen 运动控制
  2. Linux笔记(27)用户与组(8)groupadd命令
  3. golang中结构体转成xml格式
  4. 如何查询oracle 的版本
  5. 现在Python就业很难吗?百万程序员都在关心的问题
  6. 记一次burpsuite安装问题的解决(包括打不开burp-loader-keygen.jar,点击run无反应,回显-Xbootclasspath/p is no longer a sup
  7. 小清新风格的微信公众号图文这样排版,看过的都说好。
  8. 经典CNN结构论文阅读:AlexNet
  9. Go 离线安装依赖包
  10. 椭圆参数方程,椭圆离心角和圆心角的关系