【核弹】我的第一款IDEA插件

SuperHotSwap

插件名称叫做:SuperHotSwap(超级热更新)

开发初心:旨在做出一款最便捷的IDEA热更新插件,减少用户操作步骤,提供零配置的可视化操作更新。

为什么要写这个插件:

  • 每次改一下MapperXML文件都得重启项目,动则几分钟,效率非常低。
  • 现有的MapperXML热更新方式都是引入jar包的方式,底层是通过轮询文件修改事件触发相应的更新事件,显然会影响项目性能,并且和项目强耦合
  • 我从21年的时候就学习了热更新这一块的知识,之前一直是输入,这次终于是输出。

整体架构

项目分为Agent、RPC、Client三个核心模块,功能分工明确,结构很简单。

  • Client端负责IDEA页面配置和功能扩展编写,在IDEA文件右键添加热更新菜单,点击触发文件更新。
  • Agent模块用于与Client端交互,通过Attach方法加载到项目中,实现操作项目中任何资源等强大功能。
  • RPC模块是支持Client端与Agent端远程调用的轻量级框架,Client端通过JDK反射+动态代理扫描RPC注解生成代理类,通信方式采取Socket+对象序列化的方式,Agent模块加载后触发运行RPC服务端Socket监听,通过SPI+反射的方式实现Client与Agent实时通信交互。

开发环境

  • JDK1.8
  • IDEA2021.3
  • Gradle8.7

支持功能

支持功能 是否支持
MybatisXML热更新
Class热更新 √ (增强功能需安装DCEVM补丁)
远程项目热更新 进行中)

使用流程

安装插件

打开IDEA插件市场搜索superHotswap安装

启动项目

安装成功后重启IDEA,启动项目后输出Banner表示安装成功

MapperXML热更新

在MapperXML文件下点击File Hot Swap按钮执行热更新指令,指令正常输出如下

Java热更新

idea文件自动保存是有延迟的,记得先手动ctrl+s保存一下

视频演示
https://www.bilibili.com/video/BV16z42127Vf/

最后

后续有时间可能也会推出IDEA插件开发的教程,目前项目还会继续迭代,欢迎广大朋友加入一起开源,我相信这个项目相对于CRUD项目更会让面试官眼前一亮。

最后,觉得该项目还不错,或者能对你有所帮助,不凡点个star吧~

Github地址:https://github.com/songbiaoself/SuperHotSwap

Gitee地址:https://gitee.com/song_biao/super-hot-swap

项目中用到的RPC框架地址: https://github.com/songbiaoself/easy-rpc

相关推荐
QQ_216962909610 分钟前
【项目编号:project95315】SpringBoot公共自习室管理系统:座位预约、房间管理、签到核销、公告规则完整实战
java·spring boot·后端
嵌入式阿蔡34 分钟前
面试高频考点 01:volatile / 中断 / 堆栈 八股精讲
java·面试·职场和发展·嵌入式实时数据库
秋饼1 小时前
LangChain4j + Java 实现企业级 Text-to-SQL 智能问数系统:从自然语言到安全可控的数据洞察
java·ai·技术分享·后端开发
Escalating_xu1 小时前
【C++ STL简介】从六大组件到容器、迭代器与算法协作
java·c++·算法
何以解忧,唯有..1 小时前
Python os模块详解:文件与目录操作指南
java·服务器·python
Csxyzj1 小时前
kubernetes集群部署方法
java·linux·kubernetes
SQL-First布道者1 小时前
全面解构传统持久层框架,拥抱真正的 SQL-First
java·数据库·spring boot·sql·spring·mybatis·spring jdbc
小蒜学长2 小时前
vue旅游攻略网站(代码+数据库+LW)
java·数据库·vue.js·spring boot·后端·旅游
凤山老林2 小时前
轻量级规则引擎落地:Spring Boot 集成 LiteFlow 实现动态业务编排与热更新
java·spring boot·后端·规则引擎·liteflow
夏贰四2 小时前
管控数据加载调度如何规避任务冲突?数据加载运维监控体系该如何搭建?
java·大数据·运维