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实时通信交互。