Advertisement

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

阅读量:

SuperHotSwap

插件名称名为:SuperHotSwap(Super Hot Update)

为什么要写这个插件:

  • 每次更改MapperXML文件都需要重新启动项目系统,在操作过程中通常会耗时几分钟以上, 造成效率低下.
  • 当前所有的MapperXML热更新机制均依赖于引入外部jar包的方式, 其基础机制是通过轮询文件修改事件来触发相应的更新流程, 显然这种方式会带来性能问题并且导致与项目的强耦合.
  • 我自21年就开始系统性地学习热更新相关知识, 直至今年才实现了真正意义上的输出与应用.

整体架构
项目由Agent、RPC、Client三大核心组件组成,并且其职责划分清晰明确。整个系统架构设计简洁明了,层次分明且易于理解和维护。

  • 客户端主要负责进行IDEA页面配置以及功能扩展编写工作,在IDEA文件右键处新增"热更新"菜单项。
  • 智能体组件主要用于与客户端进行交互操作,在开发过程中采用"Attach"接口完成对项目的依赖注入。
  • RPC组件提供了轻量级的远程服务调用架构,在客户端部分部署完成后能够自动启动服务监听器。
在这里插入图片描述

开发环境

  • 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插件开发的教程

看完之后觉得该项目值一看(项目不错),或者能为你提供帮助(能对你有所帮助),不妨点个STAR( STAR )吧~

全部评论 (0)

还没有任何评论哟~