当前位置: 首页 > web >正文

【第七篇】 SpringBoot项目的热部署

简介

        本文介绍了热部署(Hot Deployment)的概念、使用场景及在IDEA中的配置方法。热部署可在不重启应用的情况下动态更新代码,提升开发效率,适用于调试、微服务架构和自动化测试等场景。文章详细说明了热部署的实现步骤(导入坐标、快捷键触发),区分了Restart(加载自定义代码)和ReLoad(加载jar包)的差异,并提供了自动热部署的设置方法(通过IDEA配置或快捷键激活)。此外,还列举了默认不触发热部署的目录及如何手动配置排除目录,最后提到可通过属性关闭热部署功能。文章内容若存在错误或需改进的地方,欢迎大家指正!若对操作有任何疑问欢迎留言!非常感谢!

目录

一、热部署简介及场景

1、简介

2、典型场景

二、热部署的使用

1、导入坐标

2、使用

3、关于热部署

4、示例

三、自动热部署

1、使用步骤

2、激活方式

四、热部署相关配置

1、设置不触发热部署的目录

2、关闭热部署功能


一、热部署简介及场景

1、简介

        热部署(Hot Deployment)是指在不重启应用的情况下,动态更新代码、资源或配置,使修改立即生效。通常用于开发环境,可以显著提升开发效率,避免频繁重启应用。

2、典型场景

  • 修改代码后无需手动重启,直接看到效果(如调试接口、修复 Bug)
  • 在微服务架构中,重启单个服务可能依赖其他服务,热部署避免连锁重启。
  • 在自动化测试环节,热部署可减少部署时间,加速反馈循环。

二、热部署的使用

1、导入坐标

2、使用

        在项目运行时不用停止,直接点击Build Project或者使用快捷键Ctrl + F9,即可完成热部署。

3、关于热部署

  • 重启(Restart):自定义开发代码,包含类、页面、配置文件等,加载位置为restart类加载器
  • 重载(ReLoad):jar包,加载位置为base类加载器

        热部署功能仅仅代表Restart的过程而不包含ReLoad的过程,而程序在第一次启动的时候既包含Restart过程又包含ReLoad过程。也就是说热部署仅仅加载当前开发者自定义开发的资源,不加载jar资源。

4、示例

修改前

修改并热部署后

三、自动热部署

        若不想点击Build Project或者使用快捷键Ctrl + F9,那么也是可以在IDEA中设置自动热部署功能的。

        前提:已导入devtools坐标

1、使用步骤

        第一步,在file-settings中的Comoiler中设置自动构建项目

        第二步、在file-settings中的Advanced Settings中搜索compiler,然后将下面这个选项勾选上。

        也可以在IDEA页面上使用快捷键Ctrl+Alt+Shift+/,然后点击Registry,然后找到这个选项。

2、激活方式

        由此便开启了IDEA自动热部署的设置,激活方式是当IDEA失去鼠标焦点5秒之后就会热部署一次,测试方式是可以修改代码,然后打开浏览器倒数5秒就能发现控制台已经重启。

四、热部署相关配置

1、设置不触发热部署的目录

默认不触发热部署的目录

  • /META-INF/maven
  • /META-INF/resources
  • /resource
  • /static
  • /public
  • /templates

        虽然这里排除了resources目录,但是配置文件还是会正常参数热部署的。因为这些目录一般会用于存放静态文件,而配置文件虽然在resources目录下,但配置文件却是核心文件,所以devtools做了默认处理,于是配置文件还是会正常参与热部署。

        手动设置不参于热部署的目录,只需要在配置文件中配置指定目录的通配符即可

2、关闭热部署功能

        只需要将spring.devtools.restart.enabled的属性设置为false即可

上一篇——》【第六篇】 SpringBoot的日志基础操作https://blog.csdn.net/qq1743177790/article/details/148497495

http://www.xdnf.cn/news/12640.html

相关文章:

  • Mac 安装git心路历程(心累版)
  • Mysql批处理写入数据库
  • 虚幻基础:角色旋转
  • IEC 61347-1:2015 灯控制装置安全通用要求详解
  • Docker基础(一)
  • 轻量级Docker管理工具Docker Switchboard
  • python如何统计图片的颜色分布
  • jenkins gerrit-trigger插件配置
  • JVM 垃圾回收器 详解
  • C++算法训练营 Day11 栈与队列(2)
  • mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
  • 阿里云ACP云计算备考笔记 (4)——企业应用服务
  • 【MySQL】视图、用户管理、MySQL使用C\C++连接
  • 【数据结构初阶】单链表
  • Harmony核心:动态方法修补与.NET游戏Mod开发
  • Java实现飞机射击游戏:从设计到完整源代码
  • 【小红书拥抱开源】小红书开源大规模混合专家模型——dots.llm1
  • 使用WPF的Microsoft.Xaml.Behaviors.Wpf中通用 UI 元素事件
  • 从代码学习深度强化学习 - 初探强化学习 PyTorch版
  • 怎么解决cesium加载模型太黑,程序崩溃,不显示,位置不对模型太大,Cesium加载gltf/glb模型后变暗
  • 开心农场日记之~ 一颗向日葵的成长记录~
  • 基恩士X520 MC通信寄存器转换
  • 如何在软件著作权补正时查看已提交的程序鉴别材料和文档鉴别材料
  • 项目课题——功耗蓝牙(BLE)室内定位系统
  • python queue
  • Python|GIF 解析与构建(5):手搓截屏和帧率控制
  • 摆脱硬件依赖:SkyEye在轨道交通中的仿真应用
  • Python训练day40
  • 33 C 语言字符串转数值函数详解:atoi、atol、atoll、atof
  • D3.js与vue3力导向图开发全流程