Spring Boot 安装开发者工具 spring-boot-devtools 后,可监听 classpath 下的文件修改并自动重启服务,这个功能对业务开发时效率提升明显。
spring-boot-devtools 使用了两个 classloader,一个用于加载第三方依赖的 class,另一个加载项目源码构建的 class,重启服务时只会销毁重建后者,所以重启速度较快。
但是很多时频繁候修改文件导致服务频繁重启,可能会导致 IDE 性能问题,出现卡顿现象,解决办法是将服务重启时机,由监听文件被修改后自动触发改为主动触发。Spring Boot 开发者工具提供了主动触发重启的机制,即监听对特定文件的修改(参考这里),这个“特定文件”通过下面配置指定。
1 | properties复制代码spring.devtools.restart.trigger-file=.reloadtrigger |
上面 .reloadtrigger 需放在 classpath 搜索路径下,例如可以放在 resources 目录下。
1 | css复制代码src |
配置后,当需要触发重启时,只要修改下 .reloadtrigger 文件即可,例如 linux 下可以这样修改文件(手动编辑或其他方式均可,只要让文件内容发生变更)
1 | sh复制代码echo $(date) > ./src/main/resources/.realoadtrigger |
上面代码放在一个脚本中,每次执行以下就可以触发 Spring Boot 服务重启了。
像 IDEA 这样的工具提供了重启操作,也是利用了上面的原理。在 VSCode 也可以实现类似的一键重启操作。方法是配置一个 Build Task(见下图),之后在 VSCode 中按 Shift+Command+B 组合键触发 Spring Boot 服务重启。
Build Task 配置
1 | json复制代码{ |
结束!
本文转载自: 掘金