SpringBoot学习历程(三):Devtools热部署

SpringBoot使用DevTools实现热部署 在项目的开发中,当每次修改了后台代码后都需要重启服务,这样降低了开发效率。下面将介绍在SpringBoot项目中使用DevTools实现热部署。 spring-boot-devtools是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动还要更快,更快指的不是节省出来的手工操作的时间。 深层... 阅读详情

前言

  • 本人github仓库地址:https://github.com/RabbitsInTheGrass/springBoot-Learning
  • 所谓的热部署就是在你修改了后端代码后不需要手动重启,工具会帮你快速的自动重启是修改生效。其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。

1. 引入Spring-Boot-devtools

<!-- 引入热部署依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>true</scope>
    <optional>true</optional>
</dependency>


<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
            	<!-- 没有该配置,devtools 不生效 -->
                <fork>true</fork>
            </configuration>
        </plugin>
    </plugins>
</build>

devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机)。
注意:
《fork》标签的作用不太确定,有说是:避免 devtools 传递性的被应用到项目中其他的 module。

2. 热部署生效

  1. 在配置文件application.yml中添加 :
spring:
  devtools:
    restart:
      enabled: true  #设置开启热部署
  freemarker:
    cache: false    #页面不加载缓存,修改即时生效
  1. 在File >>> Settings >>> Build,Execution,Deployment >>> Compiler 中找到Build project automatically 并勾选。
    在这里插入图片描述
  2. 用Ctrl+Shift+A 快捷键打开 Registry,点击之后找到"compiler.automake.allow.when.app.running",勾选,【Close】关闭。
  3. 重启IDEA即可。

3. springboot提供的属性

#---------------------------------------- 
#开发人员属性
#----- -----------------------------------
#DEVTOOLS(DevToolsProperties)
spring.devtools.add-properties = true #是否启用开发属性默认值。
spring.devtools.livereload.enabled = true #是否启用与livereload.com兼容的服务器。
spring.devtools.livereload.port = 35729 #服务器端口。
spring.devtools.restart.additional-exclude = #应当从触发完全重启中排除的其他模式。
spring.devtools.restart.additional-paths = #监视更改的其他路径。
spring.devtools.restart.enabled = true #是否启用自动重启。
spring.devtools.restart.exclude= Tests.class
spring.devtools.restart.log-condition-evaluation-delta = true #是否在重新启动时记录条件评估增量。
spring.devtools.restart.poll-interval = 1s #等待两次轮询类路径更改之间的时间。
spring.devtools.restart.quiet-period = 400ms #触发重新启动之前,无需对类路径进行任何更改所需的安静时间。
spring.devtools.restart.trigger-file =#更改后触发重新启动检查的特定文件的名称。如果未指定,则任何类路径文件更改都会触发重新启动。

#REMOTE DEVTOOLS(RemoteDevToolsProperties)
spring.devtools.remote.context-path = /。~~ spring-boot!〜#用于处理远程连接的上下文路径。
spring.devtools.remote.proxy.host = #用于连接到远程应用程序的代理主机。
spring.devtools.remote.proxy.port = #用于连接到远程应用程序的代理的端口。
spring.devtools.remote.restart.enabled = true #是否启用远程重启。
spring.devtools.remote.secret = #建立连接所需的共享机密(启用远程支持所必需)。
spring.devtools.remote.secret头名= X-AUTH-TOKEN #用于传输共享密钥的HTTP标头。

4. jrebel插件

livereload ,jrebel之类的插件也可以,但是个人感觉没有devtools强大。

使用devtools工具包实现springboot热部署 springboot有3中热部署方式: 一、使用springloaded配置pom.xml文件,使用mvn spring-boot:run启动 二、使用springloaded本地加载启动,配置jvm参数 -javaagent:<jar包地址> -noverify 三、使用devtools工具包,操作简单,但是每次需要重新部署 具体配置方法: 1、在pom.xml中添加依赖 <d... 阅读详情

相关推荐

SpringBoot系列:Spring Boot热部署,集成devtools

工欲善其事,必先利其器,好的编码环境能让我们事半功倍。熟悉前端的可能都知道热部署,如Vue、AngularJS等保存便自动编译,无需重启的酣畅淋漓,羡煞不已。 其实完全用不着羡慕,在Spring Boot里,一切皆有可能,今天,热部署,他来了。 一、Spring Boot DevTools Spring Boot DevTools使用了两个ClassLoader,一个Classloader加...

Simple_Yangger的博客 1194

SpringBoot热部署环境配置与测试

什么是热部署? 热部署,就是我们在项目正在运行的时候进行了项目改造升级(增加业务),却不需要重新启动项目。 大家都知道在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动效果,往往需 要重启应用查看改变效果,其实就是重新编译生成了新的Class文件,这个文件里记录着和代码等对应 的各种信息,然后Class文件将被虚拟机的ClassLoader加载。 而热部署正是利用了这个特点,它监听到如果有 Class 文件改动了,就会创建一个新的ClaassLoader 进行加载该文件...

haiertadiedie的博客 1180

Spring Boot热部署—SpringBoot + Devtools

spring-boot、spring-boot-devtools、热部署

timebusker 5829

Spring Boot 使用 dev-tools 实现热部署

在开发 Spring Boot 项目的时候,由于需要经常进行代码的改动,如果我们频繁地重启项目,这毫无疑问是极其浪费时间和电脑性能的,所以我们可以使用 dev-tools 工具来实现 Spring Boot项目的热部署效果,代码改动后即时生效,节省大量的开发时间。 一、引入依赖 <!--devtools热部署--> <dependency> <groupId>org.springframework.boot</groupId> <ar.

qq_37543356的博客 617

SpringBoot开发——整合 DevTools 实现项目热部署

热部署指的是在应用程序运行过程中,允许开发者在不重新启动整个应用的情况下,对代码进行修改并立即生效的能力。这种机制极大地缩短了开发和测试之间的反馈周期,使得开发人员能够更加专注于业务逻辑的实现,而不必频繁等待应用的重启。是提供的一个开发工具模块,旨在简化开发过程中常见的任务,特别是自动重启和缓存控制。自动重启:当类路径下的文件发生变化时,应用会自动重启,以应用最新的代码变更。实时刷新浏览器:通过集成 LiveReload,当页面相关资源发生变化时,浏览器会自动刷新。

bjzhang75的博客 1168

wps js宏获取工作簿、工作表、单元格的值、链接转图片、单元格区域数据转二维数组、保存工作簿的常用Excel操作

wps js宏入门看这里,我写了常用的js操作Excel的方法:获取工作簿对象、获取工作表对象、获取单元格的值、链接转图片、生成条形码图片、单元格区域数据转二维数组方法、保存工作簿、弹出输入框、YesNo选择框,助你从VBA转战JS。

huaermeier的博客 3万+

springCloud设置devTools热启动

springCloud设置devTools热启动

xianhua_的博客 798

pandas,构造MultiIndex的四种方法:from_tuples、from_arrays、from_product、from_frame

1、from_tuples:通过 “元组对” 构造MultiIndex """ 一对元组,为一个索引 """ tuples = [(1, 'red'), (1, 'blue'), (2, 'red'), (2, 'blue')] pd.MultiIndex.from_tuples(tuples, names=('number', 'color')) 2、from_arrays:通过 “列表元素的组合” 构造MultiIndex """ 列中表的元素,按位置 对应组合,形成索引 """ arrays

jieru_liu的博客 5387

SpringBoot - 如何使用spring-boot-devtools实现自动编译重启?

在基于SpringBoot框架的项目中,每次修改代码之后手动重启项目这样十分浪费时间,Spring为开发者提供了spring-boot-devtools 模块使得 SpringBoot 的应用支持热部署,当配置了 devtools 后,我们在 classpath中 修改任何文件后项目都将会自动编译并重启。

记录并分享 1273

历年CSP-J(NOIP普及组)考点分析与分类汇总(纯干货)

noip/csp-j历年真题考点分类

weixin_42358969的博客 1万+

AUTOSAR从入门到精通-【自动驾驶】特斯拉全自动驾驶(FSD)

特斯拉全自动驾驶系统(Full-Self Driving,简称FSD)是特斯拉公司开发的高级驾驶辅助系统,旨在通过神经网络技术实现环境感知与车辆控制,在驾驶员监督下完成导航、转向、变道、泊车等操作。‌ 该系统自2021年发布Beta测试版以来持续迭代,最新版本为2025年10月推出的v14版本。‌FSD v14版本基于端到端神经网络架构,取代了传统代码逻辑,通过数百万视频片段训练模型,以模仿人类驾驶决策。‌ 其功能覆盖住宅区街道、城市道路及高速公路,支持交通信号识别、自动变道和环岛通行等场景。

getusushu的博客 571

关于IDEA的springboot项目的热部署(多模块)

一、开启IDEA的自动编译(静态) 具体步骤:打开顶部工具栏 File -> Settings -> Default Settings -> Build -> Compiler 然后勾选 Build project automatically 。 二、开启IDEA的自动编译(动态) 具体步骤:同时按住 Ctrl + Shift + Alt + / 然后进入Registry ,勾选自动编译并调整延时参数。 compiler.automake.allow.when.app.r

RK 3764

Python爬虫实战:逆向解析天猫商品详情API,精准捕获规格、SKU与促销活动

及浏览器开发者工具),绕过前端渲染的复杂性,直接逆向分析并调用其内部数据接口,从而高效、稳定地抓取商品的关键信息,包括商品规格、多维度SKU信息以及复杂的促销活动。print(f"SKU ID: {sku.sku_id}, 价格: ¥{sku.price}, 库存: {sku.stock}, 规格: {sku.props}")当你访问一个商品链接时,浏览器首先会加载一个几乎为空的HTML骨架,然后通过执行大量的JavaScript代码,向后台服务器发起多个异步请求,最终将获取到的数据填充到页面中。

2201_76125261的博客 1129

【精品】SpringBoot 热部署:devtools

IDEA使用SpringBoot devtools实现热部署 第一步:打开项目自动构建设置 ile – > setting – > Build,Execution,Deployment–> Compiler 第二步:勾 选compiler.automake.allow.when.app.running Control+shift+Alt+/ 选择 Registry 选中打勾 “...

哈 8341

uniapp - H5人脸识别认证与活体检测功能(纯前端免费方案+微信sdk人脸识别)完整源码,微信公众号网页/h5端人脸识别功能人脸核身(微信方案提供后端spring boot+thinkphp源码

uniapp实现人脸认证,uniAPP h5手机拍照+人脸识别,免费人脸识别插件,前端人脸识别解决方案,uniapp H5人脸识别带前后摄像头,人脸识别在H5页面进行采集,微信公众号H5人脸核身,H5端人脸识别功能实现,免费h5人脸识别插件方案,微信公众号H5网页实现人脸识别,uniapp人脸监测,uniapp人脸生物监测,使用uniapp开发H5人脸采集功能/人脸识别功能,uniapp项目—h5端人脸采集功能实现,uniapp vue3人脸核身,H5活体检测认证,人脸认证张嘴摇摇头指引动作,人脸核身 微信

🏆 前端领域优质创作者 3809

【MicroPython编程-ESP32篇:设备驱动】-SHT31温度湿度传感器驱动

SHT31 是 Sensirion 的下一代温湿度传感器。 它建立在一个新的 CMOSens® 传感器芯片之上,该芯片是 Sensirion 新湿度和温度平台的核心。

视觉与物联智能 229

Springboot+devtools配置热部署

Spring Boot提供了spring-boot-devtools这个模块来使应用支持热部署,可以提高开发者的开发效率,无需手动重启Spring Boot应用就能实现自动加载,之前写了一篇可以自动加载springboot静态文件的,这次的只需要在原来的基础上再加一些配置即可实现springboot工程的热部署,步骤如下: 1、pom文件增加依赖: <dependencies>...

小菜鸡的成长之路 1万+

SAP OData 开发从入门到提高教程的目录

笔者 18 年的 SAP 技术开发生涯,对 SAP OData 服务的开发,测试,发布,部署,测试,及基于各种不同 SAP 技术实现的 OData 服务的幕后技术实现细节和使用场合,均有着深入的研究。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 7245

一文了解SpringBoot如何开启热部署

​ 热部署的功能是如何实现的呢?这就要分两种情况来说了,非springboot工程和springboot工程的热部署实现方式完全不一样。先说一下原始的非springboot项目是如何实现热部署的。非springboot项目热部署实现原理​ 开发非springboot项目时,我们要制作一个web工程并通过tomcat启动,通常需要先安装tomcat服务器到磁盘中,开发的程序配置发布到安装的tomcat服务器上。如果想实现热部署的效果,这种情况其实有两种做法,一种是在tomcat服务器的配置文件中进行配置,

Learning_xzj的博客 9348

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SpringBoot热部署重启关闭(DevTools)

SpringBoot热部署重启关闭(DevTools)

Charge8的博客 4314

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SpringBoot入门 - 配置热部署devtools工具

热部署和热加载是在应用正在运行的时候,自动更新(重新加载或者替换class等)应用的一种能力。(PS:spring-boot-devtools提供的方案也是要重启的,只是无需手动重启能实现自动加载而已。严格意义上,我们需要区分下热部署和热加载, 对于Java项目而言:热部署在服务器运行时重新部署项目它是直接重新加载整个应用,这种方式会释放内存,比热加载更加干净彻底,但同时也更费时间。热加载在运行时重新加载class,从而升级应用。热加载的实现原理主要依赖java的类加载机制。

DeveloperFire的博客 4455

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Springboot Devtools 实现热部署——SpringBoot学习

  SpringBoot 项目可以通过使用 Devtools 工具实现项目热部署,部署方式是自动重新部署。   使用 Devtools 工具进行热部署 SpringBoot 项目时很简单,只需要加入 devtools 坐标或 JAR 即可,坐标如下: <!-- DevTools --> <dependency> <groupId>org.springframe...

写Bug的小白的博客 451

SpringBoot入门-配置热部署devtools工具

LiveLoad是提供浏览器客户端自动加载更新的工具,分为LiveLoad服务器和Liveload浏览器插件两部分;devtools中已经集成了LiveLoad服务器,所以如果我们开发的是web应用,并且期望浏览器自动刷新, 这时候可以考虑LiveLoad。同一时间只能运行一个LiveReload服务器。开始应用程序之前,请确保没有其他LiveReload服务器正在运行。如果从IDE启动多个应用程序,则只有第一个应用程序将支持LiveReload。

qq_34193201的博客 2088

SpringBoot【实现热部署-devtools】

  本文介绍下在IDEA中项目热部署的两种方式,因为如果每次我们修改下页面的代码都需要重新启动的话那么效率就太低了。 IDEA使用SpringBoot devtools 放开配置   在IDEA中热部署默认是没有放开的,我们需要放开设置,具体如下 file – > setting – > Build,Execution,Deployment–> Compiler Cont...

波波烤鸭的博客 1895

SpringBoot热部署

目录一、手动启动热部署二、自动启动热部署三、热部署范围配置四、关闭热部署 热部署的理解 通俗点说就是你的程序更改了,需要重新启动服务器再才会生效,嫌麻烦?嫌耗时?不想重启,服务器会悄悄的把更新好的程序重新加载一次,这就是热部署。 一、手动启动热部署 步骤①:导入对应的坐标 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools

qq_51938362的博客 5591

SpringBoot的热部署SpringLoaded和devtools

Spring的热部署:在更改代码的情况下,不用重新部署项目就可以了.1,在pom.xml中加入依赖包•      &lt;plugin&gt;•                          &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;•                          &lt;artifactId&gt;sp...

Oujenny的博客 2501
上一篇: 查看数据库连接数、死锁
下一篇: SpringBoot学习历程(四):个性设置Banner
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RabbitsInTheGrass

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值