通过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依赖

1234567
<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来触发热部署。

原文地址:https://www.cnblogs.com/petewell/p/11408050.html

时间: 2024-11-08 11:39:58

通过spring-boot-devtools在IDEA中实现热部署的相关文章

spring boot web项目在IDEA下热部署解决办法(四步搞定)

最近在用spring boot 做一个web站点,修改了类.html.js等,刷新页面,没有生效,非要手动去make一下或者重启,大大降低了开发效率. 什么是热部署? 应用启动后会把编译好的Class文件加载的虚拟机中,正常情况下在项目修改了源文件是需要全部重新编译并重新加载(需要重启应用).而热部署就是监听Class文件的变动,只把发生修改的Class重新加载,而不需要重启应用,使得开发变得简便. 于是乎就在网上找到了一遍文章,安装文章设置,成功实现热部署,修改完刷新页面就能马上看到效果. 1

使用IDEA 中 实现springboot 热部署 (spring boot devtools版)

第一步:添加springboot的配置文件 首先我先贴出我的配置 添加依赖包 <!-- spring boot devtools 依赖包. --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <

IDEA新建SpringBoot+MySQL+MyBatis+Lombok+Spring Boot DevTools项目

一,IDEA新建SpringBoot+MySQL+MyBatis+Lombok+Spring Boot DevTools项目 1,新建项目的选中项 2,新建后我们需要配置勾选这个自动编译 3,按住shift+alt+ctrl+/,然后选中registry 4,然后选中这个选项 5,然后在 pom.xml文件添加以下代码,开启热部署工具,不配置不生效 <build> <plugins> <plugin> <groupId>org.springframework

IDEA中Tomcat热部署不生效问题解决办法

IDEA中Tomcat热部署不生效问题解决办法 1.设置完热部署后 2.一定要在Debug模式下运行不要点RUN!!!!!!!!!!!!!!!!! 原文地址:https://www.cnblogs.com/wenqiangit/p/11023658.html

使用spring boot devtools不要多此一举加try...catch

spring-boot-devtools是个好东西,在开发调试时可以随时热部署,不用每次手工启停.前两天一个项目查log,发现总有这样的错误日志输出: org.springframework.boot.devtools.restart.SilentExitExceptionHandler$SilentExitException at org.springframework.boot.devtools.restart.SilentExitExceptionHandler.exitCurrentTh

Spring Boot事务管理(中)

在上一篇 Spring Boot事务管理(上)的基础上介绍Spring Boot事务属性和事务回滚规则 . 4 Spring Boot事务属性 什么是事务属性呢?事务属性可以理解成事务的一些基本配置,描述了事务策略如何应用到方法上.事务属性包含了5个方面,如图所示,它们定义于TransactionDefinition接口类   1. 事务隔离级别 隔离级别是指若干个并发事务之间的隔离程度. Spring Boot的隔离级别被封装在枚举类Isolation,枚举值取自接口TransactionDe

漫谈Spring Security 在Spring Boot 2.x endpoints中的应用(一)

Spring Boot 2.x极大简化了默认的安全配置,并不是说有很多安全相关的配置,现在你只需要提供一个WebSecurityConfigurerAdapter继承类这样一个简单的操作,Spring Boot就可以规避很多安全问题. Actuator 不再有各自单独的安全配置(management.security.*配置已被取消),每个endpoint的sensitive 标志也会被取消,这样使得安全配置更加明确了. 比如说:你有如下配置 endpoints: info: sensitive

为spring boot 写的Controller中的rest接口配置swagger

1.pom.xml文件中加入下列依赖: <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.6.1</version></dependency> <dependency> <groupId>io.springfox</groupId&g

Spring Boot 在Linux环境中 使用System.loadLibrary(&quot;XXX&quot;) 加载so文件

场景, 在Spring Boot加载so文件, 在此记录配置的过程和帮助过我的链接文档 System.loadLibrary("hello"); // Load native library at runtime hello.dll (Windows) or libhello.so 注意: window环境中文件名为hello.dll 或 libhello.so 步骤1: 把so文件存放在一个目录中 步骤2: Linux 运行jar文件配置lib库地址 nohup java -Dfil

自建生成代码工具(暂支持Spring boot +JPA)(更新中)

我们努力的方向就是用更少的时间写出更高质量的代码,因此我们都需要借助一些工具来提高自己的开发效率.写代码有些年头了,慢慢的可以写一些东西来提高工作效率.主要会从Java后台和Android开始,暂时叫“Auto coding”,大家如果有更好的想法麻烦告诉我,谢谢. 1. 生成后台和管理端代码  往往我们做项目会先把表建好再进行编码,管理端有多相似的地方,所以通过表SQL利用AutoCoding所以大部分代码,再对部分部分地方手动调整就能先快速完成一个功能模块. Spring boot JPA