热更新
小于 1 分钟languagejava
概述
Java 原生支持
java 从1.4 开始支持热更新,不过只能支持方法层面的修改,即使用开发工具(类似IDEA)运行项目后有修改了某方法的逻辑,那么通过热更新可以不重启项目就执行新的逻辑(在IDEA中点击 Run/Debug Configuration左边的小锤子或者使用组合键Ctrl+F9)。但是不支持类结构的更改,即为某个类新增了一个方法则无法热更新。 要记得在 IDEA 的 Run/Debug Configuration 如下图一样设置 
Spring 增强
在 pom.xml 中添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
就支持类结构的变化了。原理是 spring 使用了两个类加载器,一个用来加载不变的类,即项目依赖的第三方 jar,另外一个类加载器用于加载项目中自己制作的类。并且热更新功能其实相当于重启项目,如果项目中用到了权限管理框架(Spring Security 或者 Shiro)使用热更新后需要重新登录。
