idea修改代码后没有重新编译_SpringBoot中实现代码修改之后的自动更新与热加载...

8d253e9116b3304cbfbba57d93aea44b.png

在实际的开发过程中,我们经常修改代码之后,手动的重启项目,查看修改效果。那么有没有一种方式能够快速的、自动的帮我们将修改代码自动更新,避免手动重启,从而提高开发效率呢?是有的,对于这个功能很多人对功能的叫法有争议,也没有权威的定义,笔者知道的就有:热启动、热加载、热更新、热部署。笔者觉得“热加载”可能更准确一些。但是叫什么并不重要,实现了最重要!

1.1.引入devtools的maven依赖

org.springframework.boot spring-boot-devtools true

spring-boot-devtools从名称就可以看出来,是开发者工具包,其主要的功能就是实现热加载。其实现原理就是两个ClassLoader,一个负责加载那些不会经常改变的文件,比如:第三方jar包;一个负责加载可能经常改变的类,比如我们自己在项目中写的代码,被称为restart ClassLoader。当有代码发生改变的时候,重建一个restart ClassLoader,原有的restart ClassLoader被丢掉。由于每次重新加载的内容较少,所以速度比手动重启更快一些。

org.springframework.boot spring-boot-maven-plugin true

在 plugin 中配置另外一个属性 fork,并且配置为 true。

1.2.设置IDEA

运行时编译配置:组合键:“Shift+Ctrl+Alt+/” ,选择 “Registry” ,选中打勾 “compiler.automake.allow.when.app.running” 。

7db1e90cecf94d63b878eb356932b347.png

自动化编译配置: “File” -> “Settings” -> “Build,Execution,Deplyment” -> “Compiler”,选中打勾 “Build project automatically” 。这是一种重新自动化的编译整体项目的方法。但是笔者一般不这么做,因为IDEA的文件是自动保存的,你想修改一个字符串,有可能你只修改完成第一个字符它就重新编译了。所以,笔者一般修改完成之后,使用Ctrl + Shift + F9快捷键对修改类重新编译,而不是做项目的自动化整体编译。

20fade5bb40b1d2d029f93ba5673f52e.png

1.3 进行一下application.properties配置

在有些版本我们需要配置热加载生效的开关,使其值等于true。下文是properties格式配置,喜欢yml格式的同学可以自行调整一下。

#热加载生效spring.devtools.restart.enabled=true#额外新增的热加载目录spring.devtools.restart.additional-paths= src/main/java#热加载排除目录#spring.devtools.restart.exclude= 

默认情况下,支持热加载的目录如下,如果需要其它目录下文件支持热加载需要手动配置:

  1. /META-INF/maven
  2. /META-INF/resources
  3. /resources
  4. /static
  5. /public
  6. /templates

改一下代码,看看会不会生效。通常不生效的原因有两种:

  • JDK编译版本和运行版本不同意,自行学习一下IDEA环境下JDK配置
  • 浏览器缓存或者其他的缓存软件导致的问题

写在最后

点击我的头像进入我的主页,底栏导航里还有更多技术精品合集

本号只做持续的知识输出,希望您能关注、评论、转发!您的支持是我不竭的创作动力!让知识产生价值、让程序员改变世界!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435163.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 从assets和res中读取文件(转)

1. 相关文件夹介绍 在Android项目文件夹里面,主要的资源文件是放在res文件夹里面的。assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件被预编译,可以存放一些图片,html&#xff0c…

WINCE6开机进度条

大致思路,在NBoot或EBoot加开机进度条,由于WINCE启动主要时间都花在读取NK,因此每读取一定的页,就在屏上画一条固定高度的线,并记录画线的位置,下次接着画,直到读取完NK,这样就产生的…

电脑查看wifi密码

右键 打开“网络。。。。。。”

软件oem要注意什么_做化妆品oem,选择化妆品包材要注意什么问题

化妆品企业找厂家做oem,一般厂家都是负责设计研发生产的,但是设计出来的产品包材,就需要找其它的包材厂家去采购了,很多没有经验的品牌商都不清楚找包材要怎么找,好看质量好就可以了吗?韵丽生物科技化妆品代…

等高线转dem

可以自行设置分辨率

ARM指令 LDR 和 ADR的一些区别

LDR 是ARM中的指令,也是伪指令。 当用 LDR r, imd // r 为寄存器, imd为立即数 LDR 是一条伪指令。编译器会根据 立即数的大小,决定用 ldr 指令或者是mov或mvn指令。 当imd能用mov或者mvn操作时,就将它翻译成一条mov或mvn指令。当…

阻塞 cpu占用

请问,windowsxp系统下,有一个线程A,此线程中需要wait一个信号,我有以下观点,请大家帮我判断一下我的观点对不对,谢谢!如果我用阻塞方式,则一旦轮到这个线程执行,os只要发…

登录验证应该是进行在客户端还是服务器端_网站登录认证方式

目前大部分软件系统资源访问都是使用HTTP协议,HTTP是无状态的协议,每次请求默认都是相互独立的。但是大部分情况下我们需要记录请求资源的用户信息,也就是保存会话,从而对资源的访问做限制,这是我们认证功能。常用的认…

arcgis将点的属性赋值给面

例子:将点的编号属性列赋值到对应的面属性

关于application title一直是untitled的问题

建立了一个cocoaapplication项目,在Interface Builder中修改了title,在运行时标题始终是“Untitled”。这是我在http://stackoverflow.com/questions/4720030/cocoa-mac-application-title-says-untitled上找的解决方法。I have created a document base…

python 中文apichm_python api 中文 chm

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

arcgis投影数据计算度分秒

原始数据投影坐标系 1.先将图层坐标改为地理坐标系 2.添加字段必须是文本类型,否则计算不出度分秒的形式,只显示十进制 错误示例(字段类型为双精度) 正确示例(字段类型为文本类型)

Js实现异步刷新(原创)

看了ajax的一些资料,稍微学到了一点东西,于是写出来与大家分享,由于读的资料比较少和自己的看法可能不全面,再加上自己的拙笔,如果不小心写错,还请大家 谅解 一.ajax理论叙述 ajax并不是一个新技术&#xf…

python压缩算法_LZ77压缩算法编码原理详解(结合图片和简单代码)

前言LZ77算法是无损压缩算法,由以色列人Abraham Lempel发表于1977年。LZ77是典型的基于字典的压缩算法,现在很多压缩技术都是基于LZ77。鉴于其在数据压缩领域的地位,本文将结合图片和源码详细介绍其原理。原理介绍:首先介绍几个专…

ARM汇编中的ldr和adr的区别及其在uboot中相关源码的分析

ARM汇编有ldr指令以及ldr、adr伪指令,它们都可以将标号表达式作为操作数,下面通过分析一段代码以及对应的反汇编结果来说明它们的区别。 ldr r0, _start adr r0, _start ldr r0, _start _start: b _start 编译的时候设置 RO 为 0x30000000&#xf…

arcgis裁剪后发现部分矢量缺失

解决办法 1.先修复几何 2.再进行裁剪 修复几何 修复的内容如下

SpringMVC上传文件以流方式判断类型附常用类型

此类中判断类型所截取的byte 长度暂不确定,请使用者测试过使用 packagecom.tg.common.other;importcom.tg.common.tginterface.TG_FileUpload;importjava.io.ByteArrayOutputStream;importjava.io.File;importjava.io.IOException;importjava.io.InputStream;import…

arcgis快速创建斜坡单元剖面线

本教程做出的剖面只能用作参考,实际工作中需要进行修改 一、数据: 1.斜坡单元 DEM 步骤 利用DEM做出坡向2.提取斜坡单元内部点数据 提取斜坡单元边界线数据 提取坡向数据至点属性 3.给带有剖面点的数据添加xy坐标字段,数据类型选择数值型 添…

ARM中的ldr指令与adr、ldr伪指令之间的区别

ARM汇编语言中有ldr指令和ldr、adr伪指令,他们都可以将标号表达式作为操作数。区别如下: ldr指令和adr、ldr伪指令的区别:ldr指令属于load-store指令,用于读取标号地址中的值;adr、ldr伪指令用于获取标号的地址。 adr和…