VSCode 中配置一键重启 SpringBoot 服务

Spring Boot 安装开发者工具 spring-boot-devtools 后,可监听 classpath 下的文件修改并自动重启服务,这个功能对业务开发时效率提升明显。

spring-boot-devtools 使用了两个 classloader,一个用于加载第三方依赖的 class,另一个加载项目源码构建的 class,重启服务时只会销毁重建后者,所以重启速度较快。

但是很多时频繁候修改文件导致服务频繁重启,可能会导致 IDE 性能问题,出现卡顿现象,解决办法是将服务重启时机,由监听文件被修改后自动触发改为主动触发。Spring Boot 开发者工具提供了主动触发重启的机制,即监听对特定文件的修改(参考这里),这个“特定文件”通过下面配置指定。

spring.devtools.restart.trigger-file=.reloadtrigger
复制代码

上面 .reloadtrigger 需放在 classpath 搜索路径下,例如可以放在 resources 目录下。

src
+- main
   +- resources
      +- .reloadtrigger
复制代码

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

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

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

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

image.png

Build Task 配置

{
    "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
            }
        }
    ]
}
复制代码

结束!

おすすめ

転載: juejin.im/post/7034469695143018509