首先,不管是热加载还是热部署,都可以在不重启服务的情况下编译/部署项目,都是基于 java 的类加载器实现的。
二者区别如下:
在部署方式上:
热部署是在运行时重新部署项目。
热加载是在运行时重新加载 class。
在实现原理上:
热部署是直接重新加载整个应用,耗时相对较高。
热加载是在运行时重新加载 class,后台会启动一个线程不断检测你的类是否改变。
在使用场景上:
热部署更多的是在生产环境使用。
热加载则更多的是在开发环境上使用。线上由于安全性问题不会使用,难以监控。