通过spring-boot-devtools在IDEA中实现热部署

Posted petewell

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过spring-boot-devtools在IDEA中实现热部署相关的知识,希望对你有一定的参考价值。

原文引用https://www.dazhuanlan.com/2019/08/25/5d622b4430fa1/


Java每次修改代码后,都要重新编译部署,调试效率太低了。网上推荐用spring-boot-devtools可以实现热部署,因此自己尝试了下。

环境安装

环境安装参考自这个文章:https://www.cnblogs.com/sprinkle/p/7058630.html

配置maven依赖

1
2
3
4
5
6
7

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>runtime</scope>
</dependency>

修改IDEA的设置

1、“File” -> “Settings” -> “Build,Execution,Deplyment” -> “Compiler”,取消打勾(这是为了解决卡顿问题,后面会讲到) “Build project automatically” 。
2、组合键:“Shift+Ctrl+Alt+/” ,选择 “Registry” ,选中打勾 “compiler.automake.allow.when.app.running” 。

Chrome禁用缓存

F12或者“Ctrl+Shift+I”,打开开发者工具,“Network” 选项卡下 选中打勾 “Disable Cache(while DevTools is open)” 。

使用体验

热部署没有想象中快

我用当前开发的一个web项目做测试,发现每次代码修改保存后,热部署需要耗费4秒左右,比整个项目重新部署(耗时7-8秒左右)快一半,但是还是没达到像脚本语言那样的零部署的体验程度。

采用Artifact方式运行的进程,热部署不生效

这种方式运行的进程,经测试修改代码,是不会触发热部署的。

仅针对Application类的原始SpringBoot项目,这个热部署才会生效。

原因猜测是通过Artifact方式运行时,用的是单独设置的tomcat,而不是SpringBoot自带的tomcat,而devtools无法影响这个单独的tomcat,因此不生效。

这个问题影响不大,一般我们开发时都是用的SB自带的tomcat。

开启自动热部署,写代码会出现明显卡顿

IDEA只要你几秒不操作,就会自动执行一次保存操作;再加上习惯了ctrl+s的保存动作,时不时按一下,导致代码文档的保存是一个频率非常高的动作。

当设置了运行时自动编译,那么一保存就会触发编译动作,devtools应该是通过监听编译动作来触发热部署的,这样就导致频繁的热部署,CPU长时间处于高负荷,进而导致电脑卡顿。

解决方案就是,不要设置运行时自动编译,即这个不要勾选:

然后在代码修改完,确定要使其生效的时候,通过快捷键ctrl+F9来触发热部署。

以上是关于通过spring-boot-devtools在IDEA中实现热部署的主要内容,如果未能解决你的问题,请参考以下文章

springboot热部署(spring-boot-devtools)配置及原理验证

spring-boot-devtools在Idea中热部署方法

spring-boot-devtools在Idea中热部署方法

spring-boot-devtools在Idea中热部署方法

spring-boot-devtools热部署

spring-boot-devtools