背景:我们在开发的过程中,时常会要修改代码+保存+发布,一个重启需要很长时间,是可忍孰不可忍,哎,所以这不想着偷懒么,幸好早有前辈想到了,于是乎便有了spring-boot-devtools模块的诞生
诞生
spring为开发者提供了一个名为spring-boot-devtools的模块
- 使Spring Boot应用支持热部署,提高开发者的开发效率。
- 无需手动重启Spring Boot应用。
基本配置
超简单的配置,是人都能看得懂
-
pom.xml添加热部署
<!--添加热部署依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <scope>runtime</scope> </dependency>
-
插件配置
<plugin> <!--热部署配置--> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!--fork:如果没有该项配置,整个devtools不会起作用--> <fork>true</fork> </configuration> </plugin>
-
设置IDEA的自动编译:
(1)
(2)快捷键 ctrl + shift + alt + /
选择
至此,我们的配置全部完成了,打完收工。可以做到以下的支持:
-
修改类+保存:应用会重启
-
修改配置文件+保存:应用会重启
-
修改页面+保存:应用会重启,页面会刷新,但是要:spring.thymeleaf.cache = false
原理:
采用了双ClassLoader加载类,一个ClassLoader加载不变的类,例如三方的类库,一个restart ClassLoader加载那些变化的类,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间(5秒以内)
吐槽下:
感觉启动并没有那么的快,但是绝对比你手速要快,这点你要相信!