通过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 |
|
修改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中热部署方法