前言
在实际开发过程中,每次修改代码就得将项目重启,重新部署,对于一些大型应用来说,重启时间需要花费大量的时间成本。对于一个后端开发者来说,重启过程确实很难受。目前的java虚拟机只能实现方法体的热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作。
热部署原理
说到热部署不得不提类的加载过程:加载、验证、准备、解析、初始化。
类的加载过程遵循双亲委派机制,就是在加载一个class的时候,会始终尝试先委派给父类加载器。我们只需要自定义类加载器,监听或通过其他途径监听文件的变动,使用自定义的类加载器重新进行加载即可。
idea内置热部署
step1:在IDEA中添加远程debug配置,host填服务器的ip,自定义一个端口号,会自动生成“Command line arguments remote JVM”参数。
setp2:启动java进程的时候添加VM参数,如果是docker环境还需要指定端口映射。
java -jar -agentlib:jdwp=transport=dt_socket,server&#