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