Developer Tools 是 Spring 提供的一个提高开发效率的工具。
如何使用?
需要在 Spring Boot 项目中添加相关依赖:
Maven 配置
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
Gradle 配置
dependencies {
developmentOnly("org.springframework.boot:spring-boot-devtools")
}
自动重启
DevTools 会监控 classpath 路径中的文件,当这些文件发生变化并且发生某些触发动作时,应用将会被自动重启。
在不同的 IDE 中,这些触发动作是不同的:
- 在 Eclipse 中,当保存文件时会触发自动重启。
- 在 IEDA 中,则是在编译时触发(【Build】-->【Build Project】,快捷键 Ctrl + F9)。
在使用 IEDA 时,需要手动编辑时才会触发自动重启,这显然还是不太方便 。
为了避免每次都手动编译,我们可以配置更新策略:
- 点击主菜单中的【Run】--> 【Edit Configurations】。
- 在弹出的【Run/Debug Configurations】窗口中,选中需要配置的应用。
- 在 Running Application Update Policies 下面进行配置:
- On 'Update' action -- 配置当”更新“发生时,采取的动作。(备注:我没搞明白这个更新时机是啥,当只配置这一项时,好像不起作用,IDEA 版本:2020.4)。
- On frame deactivation -- 配置当 IDEA 窗口”失活“(比如切换到浏览器等其他窗口),采取的动作。这一项配置是有效的,我将这一项配置为 ”Update classes and resources“ ,当我改完代码切换到浏览器时,应用会自动重启。
作用和原理
DevTools 的主要作用是减少重启的时间,它并不是真正的热加载技术(比如:JRebel)。
DevTools 的基本原理是,将代码分为两部分:不变的部分(比如第三方 JAR 包)和变化部分。不变的部分(比如第三方 JAR 包)由 base blassloader 加载,变化的部分由 restart classloader 加载。这样每次重启时,只加载变化的部分,这样就减少了启动的时间。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于