什么是热加载
热加载是指可以在不重启服务的情况下让更改的代码生效,热加载可以显著的提升开发以及调试的效率,它是基于 Java 的类加载器实现的,但是由于热加载的不安全性,一般不会用于正式的生产环境。
热加载和热部署的区别
首先,不管是热加载还是热部署,都可以在不重启服务的情况下编译/部署项目,都是基于 Java 的类加载器实现的。那么两者到底有什么区别呢?
- 热部署是在服务器运行时重新部署项目。
- 热加载是在运行时重新加载 class。
热加载实现思路
根据Java的类加载机制,我们可操作的环节只有加载阶段。同时为了避免双亲委派机制的限制,热加载类对系统加载类是不可见的(它加载过了,就变更不了啦),要通过其他加载类加载(如URLClassLoader、自定义加载器等)。
例子
热加载的接口
package com.sky.learn.hotload;
/**
* 要热加载的类一定要有一个接口或基类引用
* @author Administrator
*/
public interface HotLoadInf {
public void show();
}
测试类
package com.sky.learn.hotload;
import java.i