1、spring-boot-devtools是一个为开发者服务的一个模块,其中最重要的功能就是自动部署新代码。spring
2、原理缓存
使用了两个ClassLoader,一个ClassLoader用来加载那些不会变的类(如:第三方Jar包),另外一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改时,原来的restart ClassLoader被丢弃,从新建立一个restart ClassLoader。如此一来,因为须要加载的类比较少,因此实现了较快的重启。app
3、发生时机maven
devtools会监听classpath下的文件变更,并会当即重启应用ide
1、开启idea自动make功能 spring-boot
一、CTRL + SHIFT + A --> 查找 make project automatically --> 选中 ui
二、CTRL + SHIFT + A --> 查找 Registry --> 找到并勾选 compiler.automake.allow.when.app.running idea
重启idea 重启idea 重启idea 重启idea 重启idea 重启idea spa
2、使用spring-boot-1.3开始有的热部署功能
一、加maven依赖rest
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>
二、开启热部署
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> </plugins> </build>
3、Chrome禁用缓存
F12(或Ctrl+Shift+J或Ctrl+Shift+I)--> NetWork --> Disable Cache(while DevTools is open)
注意:
一、若是设置SpringApplication.setRegisterShutdownHook(false),则自动重启将不起做用。
二、这种热加载比较全面,资源文件、代码的修改均可以监听到,但有些状况下也会有问题