loveqq 框架!真正不停机热部署,支持新增类字段、类方法,不再局限于只能修改方法体!
为什么需要热部署? 主要是因为大型 java 项目启动耗时长,对于开发阶段来说,增加大量调试成本。对于生产环境来说,则会对客户造成短暂的服务不可用,特别是仅仅修改了少量的情况,确需要重启整个应用,实在是没有必要。 热部署难点? java 项目热部署的最大的难点是,class 字节码一旦被 jvm 加载生成 class,就不能再修改。即使使用 agent 也只能修改方法体,而不能新增方法、新增字段。 其次,是对各个框架的支持,如果新的 class 是个配置类,对应的三方组件能否正确更新。 还有是否支持远程部署等。 loveqq 如何实现真正的热部署? 1、如何实现修改方法体的热部署? loveqq 框架内置了 HotSwapAgent,通过 Instrumentation#redefineClasses 实现方法体的热更新,这个是 jvm 直接支持的 2、如何实现新增字段、方法? 这个功能用到 decevm,这是一个开源项目。支持 jdk8、jdk17,更新的 jdk 版本可以直接使用JetBrainsRuntime jdk 即可 3、如何支持第...



