热部署与热加载联系
- 不重启服务器编译/部署项目
- 基于Java的类加载器实现
热部署与热加载的区别
- 热部署在服务器运行时重新加载部署项目
- 热加载运行时重新加载class
热部署与热加载在实现原理上的区别
- 热部署直接重新加载整个应用
- 热加载在运行时重新加载class
使用场景
- 热部署更多的是在生产环境使用
- 热加载则更多的是在开发环境中使用
热部署原理解析
类加载的五个阶段
热部署原理-Java类加载器特点
- 由AppClass Loader(系统类加载器)开始加载指定的类。
- 类加载器将加载任务交给其父类,如果父类找不到,再由自己去加载。
- Bootstrap Loader(启动类加载器)是最顶级的类加载器。
Java类的热部署
类的热加载
public class MyClassLoader extends ClassLoader {
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException {
byte[] data = this.loadClassData(name);
return this.defineClass(name, data, 0, data.length);
}
}
配置Tomcat
原生热部署
直接把项目web文件放在webapps里
自定义路径热部署
在tomcat\conf\sever.xml中的内部添加标签。
通过配置Tomcat实现热部署
在 %tomcat_home%\conf\Catalina\localhost中添加一个XML