几种热部署方案

  • 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. 强烈推荐:240多个jQuery插件
  2. 深入浅出 CPropertySheet
  3. Unsupported format or combination of formats) Failed to parse onnx model
  4. 网易2019实习生Java编程题
  5. openstack项目【day23】:KVM介绍
  6. shell执行的特殊变数
  7. A8U公司的老程序猿的悲惨下场
  8. 一起学习C语言:函数(一)
  9. SQL Server中 char与varchar
  10. 微信潜规则:月薪过万的90后,过年都在看什么?
  11. 测测你写了多少行代码【转】
  12. mysql indexkey提取,MySQL元数据获取基础笔记day06
  13. html表单验证元素必填,JavaScript 表单验证
  14. EDA 课程设计 实验报告及源文件
  15. Java关于周跨年的周数计算,编写一个JAVA类,用于计算两个日期之间的周数。
  16. 欧瑞变频器800参数设置_欧瑞变频器E800说明书(中文)2014080504A(2014.08.05).pdf
  17. ISAPI报警模块流程
  18. 计算机创造奇迹的英语作文,创造奇迹英语作文Creating Miracle
  19. 保研分享:双非软件学渣 - 985CS
  20. Python用Pillow(PIL)进行简单的图像操作(边缘增强、锐利、平滑等)

热门文章

  1. 23种java设计模式详解-代理模式
  2. vue实现打开新窗口预览PDF文件
  3. 计算机网络举例说明,什么是计算机网络,举例说明计算机网络有哪些应用?
  4. 阿里云新增三大高性能计算解决方案,助力生命科学行业快速发展
  5. vue组件孙子调用爷爷的方法
  6. 视频丨中兴通讯齐聚全球合作伙伴的力量 拥抱最好的时代
  7. Android 架构之长连接技术
  8. 如何实现自定义串口通信协议?
  9. PWM互补脉冲配置,互补输出异常
  10. java导出csv小程序_微信小程序——使用excel-export导出excel