VSCode 中配置一键重启 SpringBoot 服务

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
2
3
4
css复制代码src
+- main
+- resources
+- .reloadtrigger

配置后,当需要触发重启时,只要修改下 .reloadtrigger 文件即可,例如 linux 下可以这样修改文件(手动编辑或其他方式均可,只要让文件内容发生变更)

1
sh复制代码echo $(date) > ./src/main/resources/.realoadtrigger

上面代码放在一个脚本中,每次执行以下就可以触发 Spring Boot 服务重启了。

像 IDEA 这样的工具提供了重启操作,也是利用了上面的原理。在 VSCode 也可以实现类似的一键重启操作。方法是配置一个 Build Task(见下图),之后在 VSCode 中按 Shift+Command+B 组合键触发 Spring Boot 服务重启。

image.png

Build Task 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
json复制代码{
"version": "2.0.0",
"tasks": [
{
"label": "重启服务",
"type": "shell",
"command": "echo $(date) > ${workspaceFolder}/src/main/resources/.reloadtrigger",
"problemMatcher": [],
"presentation": {
// 静默执行,否则每次重启都会弹出输出面板
"reveal": "silent"
},
"group": {
"kind": "build",
"isDefault": true
}
}
]
}

结束!

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%