SpringBoot之如何实现热部署?这你得会 | 超级详细,建议收藏

一文解决IDea中Springboot 热部署:IDEA中Spring Boot应用热部署的几种方式及操作步骤 在快节奏的软件开发过程中,热部署(Hot Deployment)功能对于提升开发效率至关重要。尤其是在使用Spring Boot框架进行开发时,能够实现代码的即时更新和应用的无需重启,极大地节省了开发时间,提高了迭代速度。然而,在实际使用中,开发者可能会遇到一些痛难点和问题。本文将详细介绍在IntelliJ IDEA中配置Spring Boot应用热部署的方法,以及一些常见问题的解决方法。 阅读详情
✍️温馨提醒:本文字数:1399字, 阅读完需:约 5 分钟
环境说明:Windows10+idea2021.3.2+jdk1.8+springboot2.3.1.RELEASE

一、前言

想必小伙伴在日常开发中,有遇到这么一件事吧,频繁修改一个业务接口,但为了真实测试,必须要通过页面也定位bug,只能改一步重启一次,就需要频繁重启项目,重新部署,对于一个大型项目而言,重启需要很长时间,目前我这项目重启一次将近20秒,要是这种编码效率,那明天去人事处报道的人应该就是我了,于是我就想到,热部署。

对的,没错,热部署可以替我们节省大把花在重启项目本身上的时间。那对于热部署,大家知道的又有多少呢?

热部署原理上,其实是使用了两个ClassLoader,一个ClassLoader加载哪些不会改变的类,另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样对于代码更改的时候,原来的restart ClassLoader会被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相对比较少,所以实现了快速重启。

二、热部署实现方式

传统上,热部署所知道的实现方式有三种,分别如下:

  • 配置pom.xml文件,使用插件的执行命令mvn spring-boot:run启动项目。

  • 使用springloader本地启动修改jvm参数;-javaagent: -noverify(未实测)

  • 使用devtools工具包,操作简单。

这里主要讲一下第三种方式,也是我所推荐的,因为配置及使用相对简单。我们都知道,热部署也不是万能的,对于某些更改,其实热部署也无法自动重启,还是需要重启,但是针对代码修改而进行自动重启部署,这绝对是美事一件。

接下来我就带着大家配置一下如何在自己的项目中配置热部署。

三、devtools配置

1、引入devtools依赖

在你的pom.xml配置文件中,引入devtools依赖包:

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

提示:

设置optional 为true,是避免大家微服务项目父子项目依赖继承冲突。

2、devtools的配置
spring:
  devtools:
    restart:
      enabled: true#设置开启热部署,false即不开启热部署
      additional-paths: src/main/java #指定热部署的目录
      exclude: test/**  #指定目录不更新
3、Intellij Idea修改

如果你是使用的idea工具开发,那你还需要改以下两个地方:

1、勾上自动编译或者手动重新编译 File -> Setting -> Build, Execution, Deployment -> Compiler:勾选 [Build project automatically]

演示截图如下:

2、注册 Shift+Ctrl+Alt+/(Windows快捷键), 单击[Registry],勾选 [compiler.automake.allow.when.app.running]

快捷键:Shift+Ctrl+Alt+/ 后,会弹出如下界面:

然后单击 Registry,找到 [compiler.automake.allow.when.app.running]把它勾选上。具体演示如下:

到此,以上就完成了热部署的所有配置啦,你们记得配置完成后,重启idea!让所有配置都生效。

再次,若想验证热部署是否生效,你们可以做个简单测试(比如随便修改个接口地址啥的,然后用新接口地址去访问,验证修改代码是否在不手动启动项目的情况下生效等),我这里就不给大家演示了。

同时,如下是我从网上看到的一些注意事项,经实测确实如此,也希望大家在使用热部署的同时,也能少走些弯路。

具体如下:

  1. package 打包时,不包含devtools工具。

  1. 生产环境devtools将被禁用,如java -jar方式或者自定义的类加载器等都会识别为生产环境。

  1. devtools会在windows资源管理器占用java进程,在开发工具里面杀不掉,只能手动kill掉,不然重启会选成端口被占用情况。

  1. Thymeleaf无需配置spring.thymeleaf.cache: false,devtools默认会自动设置。

四、文末💭

感谢认真读完我博客的铁子萌,在这里呢送给大家一句话,不管你是在职还是在读,绝对终身受用。
时刻警醒自己:
抱怨没有用,一切靠自己 想要过更好的生活,那就要逼着自己变的更强,生活加油!!!
IDEA2023.3.4开启SpringBoot项目的热部署【简单明了4步操作】 4步操作完成新旧版本IDEA的Spring Boot项目热部署问题 阅读详情

相关推荐

【SpringBoot 框架】- 入门——环境搭建、工程热部署、idea快捷创建SpringBoot项目

千千万万要记得:多刷题!!多刷题!!之前算法是我的硬伤,后面硬啃了好长一段时间才补回来,算法才是程序员的灵魂!!!!篇幅有限,以下只能截图分享部分的资源!!(1)多线程(这里以多线程为代表,其实整理了一本JAVA核心架构笔记集)(2)刷的算法题(还有左神的算法笔记)(3)面经+真题解析+对应的相关笔记(很全面)(4)视频学习(部分)ps:当你觉得学不进或者累了的时候,视频是个不错的选择在这里,最后只一句话:祝大家offer拿到手软!!

a1901149的博客 1537

springboot 热部署devtools

<!-- DevTools热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional>...

wyhhahaha的博客 812

Mplus实战:三变量随机截距交叉滞后模型(RI-CLPM)语法详解与扩展

本文详细解析了Mplus中三变量随机截距交叉滞后模型(RI-CLPM)的构建原理与语法实现。通过将变量分解为稳定的个体间差异与动态的个体内波动,模型能更纯净地揭示多变量间的纵向交互影响。文章以工作压力、睡眠质量与工作满意度为例,提供了完整的语法模板、关键参数设置(如NOCOV命令、残差相关)及结果解读指南,帮助研究者避开常见误区,稳健分析复杂动态关系。

wdx0123456的博客 930

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

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

Learning_xzj的博客 9349

Chromatix 7实战:从零开始调优ISP模块的完整流程(附常见报错解决方案)

本文提供了高通平台Camera调试工具Chromatix 7的完整实战指南。详细阐述了从环境准备、项目初始化、基础校正(如LSC、BPC)到核心ISP管线(Demosaic、CCM、HDR)及后处理(CAC、ANR)的调优全流程,并附带了常见报错(如“未初始化实例”)的解决方案,旨在帮助工程师建立系统性的调试方法论。

weixin_29290863的博客 627

泛微E9开发 明细表字段赋值到主表字段,将各类型合计赋值到主表类型合计中

①绑定明细表类型、预计金额字段的值改变事件,每当有值发生改变,就需要重新计算供应商1、供应商2、供应商3的合计,如果不绑定这两个字段的话,会出现计算不及时或计算错误的问题。②当有明细行被删除时,也需要重新计算供应商1、供应商2、供应商3的合计,比如删除了供应商1的明细行,如果不重新计算,那么供应商1的值还是被删之前的值,合计错误。将各类型合计赋值到主表类型合计中。

a_waste_only的博客 3836

SpringBoot之如何实现热部署?超级详细,建议收藏

想必小伙伴在日常开发中,有遇到这么一件事吧,频繁修改一个业务接口,但为了真实测试,必须要通过页面也定位bug,只能改一步重启一次,就需要频繁重启项目,重新部署,对于一个大型项目而言,重启需要很长时间,目前我这项目重启一次将近20秒,要是这种编码效率,那明天去人事处报道的人应该就是我了,于是我就想到,热部署。对的,没错,热部署可以替我们节省大把花在重启项目本身上的时间。那对于热部署,大家知道的又有多少呢?

Java技术攻略的博客 3935

反激电源RCD尖峰吸收电路的原理以及调试

反激电源RCD尖峰吸收电路的原理以及调试

mnmmnmn的博客 9255

springboot实现热部署

在实际开发中,我们做好的项目难免会出现一些问题,但是我们知道我们处理完这些问题后,我们需要重启一下服务器那么我们处理完问题后的项目才能生效(也就是说:修改了项目的代码后需要重启一下服务器然后修改后的项目才生效,不重启服务器的话要不然还是以前代码),因此这样每次修改项目问题的时候我们都要重启一次服务器在实际开发中是非常麻烦的,因此热部署就解决了这个问题,热部署可以在我们修改完项目代码后不用重启服务器就能把项目代码部署到服务器中(也就是说修改完项目代码后不用重启服务器修改后的项目代码就能生效)...

lwj_07的博客 2万+

小样本学习概述

目录 前言 小样本学习存在的意义? 什么是小样本学习? 小样本学习的方法有哪些? 结语 前言 小样本学习(Few-Shot Learning)是近几年兴起的一个研究领域,小样本学习旨在解决在数据有限的机器学习任务。 小样本学习存在的意义? 近些年,以深度卷积神经网络为代表的深度学习方法在各类机器学习任务上取得了优异的成绩——很多任务上已经超越了人类表现。狂欢背后,危机四伏。因为这些深度学习方法work的关键之一是海量标注数据的支持。 但是在工业界,很多时候难以获得海量的训练数据,更.

DwD-的博客 3万+

地统计插值学习心得(一)

(创建地统计图层工具用于根据现有的地统计图层或者地统计模型来创建包含新要素数据集的地统计图层,也就是使用构建好的地统计模型用到新的数据集中)这表明,远离极值的区域预测不受极值的影响,并且还表明,包括极值会导致钼元素浓度高的区域周围的预测明显变高。通常,我们使用同一个数据集进行建模和预测,但是在实际插值过程中,这两步的数据可以是不同的,这就是处理极值的诀窍。如果你的数据集有无法忽略的极值时(比如这些钼元素浓度),一种常见的方法是首先显式移除极值进行建模,然后在预测中使用整个数据集(包括极值)。

JData_Engineer的博客 287

SpringBoot实现热部署

深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动还要更快,更快指的不是节省出来的手工操作的时间。

2301_80092713的博客 7465

(八)DDR_PHY架构及功能——(PUB组成、初始化及Training流程、Clock关系)

文章目录一、DDR_PHY结构组成1.1、DDR Memory子系统1.2、DDR_PHY架构组成1.3、PUB模块功能实现流程1.3.1、DDR系统初始化流程1.3.2、PLL初始化流程 一、DDR_PHY结构组成 1.1、DDR Memory子系统   Memory子系统主要由DDR Controller和DDR_PHY(含DDR_IO)两个部分组成。DDR Controller主要承担其它子系统(如CPU)与Memory子系统进行数据交互时的传输效率及调度,DDR_PHY主要负责数据交互过程中的传输速

Mr.翟的博客 1万+

【SpringBoot】一文了解SpringBoot热部署

我们在了解一个东西的时候,总是喜欢问的就是为什么要?就是为什么我们需要这个,至少你要告诉我用这个的好处是什么;知道了需求然后学习,效率会好一些。所以,我们为什么要学习热部署?想象一下这个情况,我们在开发的过程中,每次修改都要重启服务器才能够去重新部署项目,在项目较小的情况下还能忍受,但是如果做的是一个大型项目,部署一次消耗的时间成本很高。所以热部署的作用就是为我们免去这些时间上的损耗。热部署是更改代码或者配置直接生效,不用重新启动运行,这就是热部署。

未来可以改变 2253

2026年GESP3月认证C++五级真题解析

因为要合并成升序数组,所以当A[i]小于等于B[j]时,取A[i],否则取B[j]。当a[i]>a[j]时,左边数组中从i到m的所有元素都大于a[j],因此逆序对数量增加m-i+1。给定一个包含n个互不相同的正整数的数组A与一个包含m个互不相同的正整数的数组B,请你帮忙计算有多少个数在数组A与数组B中均出现。下面代码实现两个整数除法,其中被除数为一个“大整数”,用字符串表示,除数是一个小整数,用int表示,则横线处应该填写()。且a[i] > a[j],则a[i]和a[j]是一个逆序对。

lan_in的博客 120

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SpringBoot热部署详解

热部署,就是不需要停掉服务,可以线上改,改完立马生效。

知足上进,不负野心。 2万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SpringBoot实现热部署详解

Spring Boot热部署是一种开发时极为有用的功能,它能够让开发人员在代码修改后无需手动重启应用程序就能立即看到变化的效果。如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,java基础面试题, netty, spring boot,spring cloud等系列文章,一系列干货随时送达!

Venus's Blog 5万+

VC中sqlite的使用

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

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【热部署】✈️Springboot 项目的热部署实现方式

本地开发通过热部署避免每次手动重启,加速开发效率

产品经理克星(狗头) 5292

[SpringBoot系列]热部署

本文涉及热部署的实现原理、手动启动热部署、自动启动热部署、参与热部署监控的文件范围配置、关闭热部署

十八岁讨厌编程的博客 1671

(超级详细)springboot实现热部署

IDEA自动make配置 目的是开启IDEA自动make功能 File->Setting->Build,Execution,Deployment->Complier,勾选Build Project automatically 快捷键:Ctrl+Shift+A,然后输入Registry,找到compiler.automake.allow.when.app.running并...

WormholeStack 3299

SpringBoot热部署

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

qq_51938362的博客 5592

SpringBoot在IDEA里实现热部署

SpringBoot在IDEA里实现热部署背景介绍开启IDEA的自动编译1.所有新项目开启2.当前项目开启开启IDEA的自动编译配置开启当前项目的热部署策略在pom文件中添加插件结语 背景介绍 我这里的IDEA版本是2021.1.3,可能版本不同,设置的地方会有差别 在公司的项目中遇到的一个问题,那就是在开发客户的一个系统时,因为登录是需要手机验证码的,每一次测试都需要向客户要验证码,开发过程中哪怕是一个小的改动都需要重新获取验证码测试,所以就找了下实现热部署的方式,这里记录一下。大大的减少了索要验证码的

大梦几千秋的博客 1万+
上一篇: 够狠!华为大佬的“百万级”MySQL笔记,基础+优化+架构一键搞定
下一篇: 阿里内部热捧“Spring全线笔记”,不止是全家桶,太完整了
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值