热部署
在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动效果,往往需要重启应用查看改变效果,其实就是重新编译生成了新的 Class 文件,这个文件里记录着和代码等对应的各种信息,然后 Class 文件将被虚拟机的 ClassLoader 加载。
而热部署正是利用了这个特点,它监听到如果有 Class 文件改动了,就会创建一个新的 ClaassLoader 进行加载该文件,经过一系列的过程,最终将结果呈现在我们眼前。
类加载机制
Java 中的类经过编译器可以把代码编译为存储字节码的 Class 文件,该 Class 文件存储了各种信息,最终要加载到虚拟机中运行使用。
类加载机制(摘自《深入理解 Java 虚拟机》)
虚拟机把描述类的数据从
Class文件加载到内存中,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。
———————————————————————————————————————
Spring Boot 实现热部署的两种方式( Spring Loaded、 spring-boot-devtools)
说明:两种方式 生效,启动不能直接运行 main 方法了,需要使用mvn spring-boot:run 启动
一、使用 Spring Loaded
说明:只对于 改变方法的返回值 ,可以实现 热部署。新加方法 不行
例如:return “hello” 改为return “hello==’”
二、使用 spring-boot-devtools
代码改变时,项目会自动重启(在控制台可以看到重启日志)
转载于:https://my.oschina.net/lsl1991/blog/1549233