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

目录

🍸前言

🍻一、热部署和手动重启

🍺二、热部署的实现

[2.1 手动启动热部署](#2.1 手动启动热部署)

[2.2 自动检测热部署](#2.2 自动检测热部署)

[2.3 关闭热部署](#2.3 关闭热部署)

💞️三、章末


🍸前言

小伙伴们大家好,书接上文,通过Springboot 中的 actuator 工具实现实时获取服务的线程转储,内存使用占比,可以完成动态监测服务的运行情况以及遇到异常时问题的排查等;在本地开发的时候,调试到问题小小修改之后需要重新启动服务,次数少还好,如果多的话也是十分耗时;Springboot 框架针对这方面可以集成热部署的工具,实现代码运行时动态加载修改的文件;之前的actuator 文章链接如下:

【SpringBoot Actuator】⭐️Actuator 依赖实现服务健康检查,线程信息收集-CSDN博客

🍻一、热部署和手动重启

热部署 手动重启
定义 不停止整个服务的情况下,动态地更新正在运行的代码或资源文件 停止当前运行的服务,然后再重新启动整个应用程序,加载更新后的代码和配置
特点 使用热部署可以在应用程序运行期间进行代码修改,这些修改可以即时反映到运行中的应用程序中,从而加快了开发和调试的效率 手动重启服务会导致应用程序在重启期间无法提供服务,有一定的停机时间,同时也会中断用户正在进行的操作
适用场景 主要用于开发和调试阶段,能够快速看到修改的效果,减少了重启服务的时间开销 手动的场景就不多说了,生产环境一般都是要手动重启的

🍺二、热部署的实现

环境准备:准备一个简单的可以启动的 Springboot 项目即可

2.1 手动启动热部署

2.1.1 依赖引入

在 pom.xml 文件中加入以下代码,然后刷新 maven 自动下载依赖

注:如果 maven 刷新过慢,或者下载失败,可以手动替换下载路径为国内阿里云镜像,具体操作上篇 Actuator 文章里有提到,较简单

XML 复制代码
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <version>2.7.12</version>
            <optional>true</optional>
        </dependency>

2.1.2 激活热部署

这里点击这两个快捷按钮或者使用快捷键 ctrl + F9 即可启动

2.1.3 测试

测试修改后返回的字符串值会不会热更新,修改项目后 build 下,确实是重新加载了

也就是使用 1 按钮,省去2 3 的重启

2.2 自动检测热部署

如果不想每次修改代码后都手动 build ,可以配置 IDEA 中的一些检测工具实现每次修改后触发重新加载(重新请求下接口触发或者监测焦点移除代码区域后5秒触发)

2.2.1 自动配置

勾选自动构建项目选项(默认是不勾选的)

快捷键 Ctrl + alt + shift + / 打开 如下页面,点击第一个 Registry ,勾选这一条,点击colse 即可

2.2.2 测试

修改后的第一次请求会触发自动加载(或者修改后失去焦点5秒后出发),后续请求的结果就是修改后的了

2.3 关闭热部署

通过配置文件中指定是否使用热部署

💞️三、章末

热部署可以实现本地开发的加速,减少在每次修改后重启服务花费的时间,可以将更多的精力放在代码层面,但是在生产环境下还是优先人工重启服务;

文章到这就结束了~

相关推荐
道1993几秒前
50 台小型无人车与50套穿戴终端 5 公里范围内通信组网方案深度研究
java·后端·struts
迎風吹頭髮5 分钟前
UNIX下C语言编程与实践35-UNIX 守护进程编写:后台执行、脱离终端、清除掩码与信号处理
java·c语言·unix
光军oi22 分钟前
全栈开发杂谈————JAVA微服务全套技术栈详解
java·开发语言·微服务
帮帮志22 分钟前
目录【系列文章目录】-(关于帮帮志,关于作者)
java·开发语言·python·链表·交互
聪明的笨猪猪23 分钟前
Java Spring “MVC ”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
qiuiuiu4131 小时前
正点原子RK3568学习日记-GIT
linux·c语言·开发语言·单片机
草莓熊Lotso1 小时前
《C++ STL list 完全指南:从基础操作到特性对比,解锁链表容器高效用法》
开发语言·c++·list
Boop_wu2 小时前
[数据结构] Map和Set
java·数据结构·算法
二王一个今2 小时前
Python打包成exe(windows)或者app(mac)
开发语言·python·macos
一勺菠萝丶2 小时前
Mac 上用 Homebrew 安装 JDK 8(适配 zsh 终端)完整教程
java·python·macos