Spring Boot 热部署详解,包含详细的配置项说明


Spring Boot 热部署详解

在这里插入图片描述


1. 热部署简介

热部署(Hot Deployment)允许在应用运行时修改代码或配置文件,无需重启应用即可使更改生效。Spring Boot 通过 spring-boot-devtools 模块实现这一功能,其核心依赖于 LiveReload 技术和自动重启机制。


2. 启用热部署的步骤
  1. 添加依赖
    pom.xml 中引入 spring-boot-devtools,并设置 <optional>true</optional> 避免传递依赖:

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional>
    </dependency>
    
  2. 重启应用
    首次启用需重启应用,之后修改代码或资源文件时,应用会自动检测并重启。

  3. 验证配置
    查看日志确认 LiveReload 服务器启动:

    o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 35729
    

3. 热部署核心原理
  • LiveReload:通过 WebSocket 监听文件变化,通知浏览器或客户端刷新。
  • 自动重启:监控类路径(classpath)的文件变化,触发应用重启。

4. 配置项详解

以下是 spring-boot-devtools 的关键配置项,通过 application.propertiesapplication.yml 配置:

配置项默认值说明
spring.devtools.livereload.enabledtrue启用/禁用 LiveReload 服务器。
spring.devtools.livereload.port35729LiveReload 服务器端口。
spring.devtools.restart.additional-exclude空字符串在默认排除路径基础上,新增不触发重启的文件夹(如 src/main/resources)。
spring.devtools.restart.additional-paths空字符串在默认监控路径基础上,新增需触发重启的文件夹(如 src/main/java)。
spring.devtools.restart.enabledtrue启用/禁用自动重启功能。
spring.devtools.restart.excludeMETA-INF/maven/**,<br>**/src/main/resources/**,<br>**/src/main/static/**,<br>**/src/main/public/**,<br>**/src/main/templates/**,<br>**/*Test.class,<br>**/*Tests.class,<br>git.properties默认排除路径(修改这些路径的文件不会触发重启)。
spring.devtools.restart.poll-interval1000ms检测文件变化的时间间隔(单位:毫秒)。
spring.devtools.restart.quiet-period400ms在无变化时,触发重启前的静默期(避免频繁重启)。
spring.devtools.restart.trigger-file空字符串指定一个文件,修改该文件时触发重启(如 trigger.txt)。

5. 配置项使用示例
# 禁用 LiveReload
spring.devtools.livereload.enabled=false# 自定义 LiveReload 端口
spring.devtools.livereload.port=35730# 新增排除路径(如日志文件)
spring.devtools.restart.additional-exclude=logs/**# 新增监控路径(如自定义配置目录)
spring.devtools.restart.additional-paths=config/# 设置触发文件
spring.devtools.restart.trigger-file=reload.txt

6. 注意事项
  • 排除路径:默认排除静态资源(如 src/main/resourcespublic)和测试类,修改这些文件不会触发重启。
  • IDE 配置:需确保 IDE(如 IntelliJ、Eclipse)支持自动编译,否则修改代码后需手动保存。
  • 远程调试:若通过远程调试启动应用,需添加参数 -noverify 以提升重启速度:
    java -noverify -jar your-app.jar
    

7. 完整配置项表格总结
配置项默认值说明
spring.devtools.livereload.enabledtrue是否启用 LiveReload 服务器。
spring.devtools.livereload.port35729LiveReload 服务器端口。
spring.devtools.restart.additional-exclude空字符串新增不触发重启的路径。
spring.devtools.restart.additional-paths空字符串新增需触发重启的路径。
spring.devtools.restart.enabledtrue是否启用自动重启。
spring.devtools.restart.exclude默认路径(见上文)默认排除路径,修改这些路径的文件不会触发重启。
spring.devtools.restart.poll-interval1000ms文件变化检测间隔。
spring.devtools.restart.quiet-period400ms触发重启前的静默期。
spring.devtools.restart.trigger-file空字符串指定触发重启的文件。

8. 常见问题
  • Q:修改代码后应用未重启?
    A:检查是否保存文件,IDE 是否自动编译,或排除路径是否包含修改的文件。
  • Q:LiveReload 未生效?
    A:确保浏览器插件(如 LiveReload 插件)已安装并启用,且端口未被占用。
  • Q:如何禁用特定模块的热部署?
    A:在 exclude 中添加路径,或通过 additional-exclude 扩展排除列表。

通过以上配置和步骤,可灵活控制 Spring Boot 应用的热部署行为,提升开发效率。

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

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

相关文章

详细解读 box-sizing: border-box;

代码解读 * {box-sizing: border-box; } 解释&#xff1a; * - 这是CSS的通用选择器&#xff0c;表示匹配文档中的所有元素 box-sizing: border-box; - 设置元素的盒模型计算方式为border-box 盒模型说明&#xff1a; 默认情况下&#xff0c;CSS使用content-box盒模型&…

《一文讲透》第7期:KWDB 巧用标签与索引优化查询性能

引言 在工业物联网快速发展的今天&#xff0c;各类智能传感器设备已广泛应用于智能制造、能源电力、智慧城市等关键领域。这些设备以极高的采样频率持续产生监测数据&#xff0c;使得单条产线每秒产生数十万条传感器数据已成为行业常态&#xff0c;这对数据存储系统的写入吞吐…

哈希扩展——一致性哈希

目录 一、什么是一致性哈希 二、一致性哈希原理 2.1 hash 环 三、服务器扩容场景 3.1 服务器增加 3.2 服务器减少 3.3 使用虚拟节点 四、 一致性哈希的使用场景 一、什么是一致性哈希 一致性哈希是一种哈希算法&#xff0c;用于将数据分布到不同的节点或存储区域&…

arcgis几何与游标(1)

本节我们对几何进行展开学习 ArcPy 的几何对象 在 ArcPy 中&#xff0c;几何对象是表示地理空间数据的核心。它包括点&#xff08;Point&#xff09;、多点&#xff08;Multipoint&#xff09;、线&#xff08;Polyline&#xff09;和面&#xff08;Polygon&#xff09;等类型…

分布式热点网络

核心设计理念&#xff1a; 在自然灾害&#xff08;地震、洪水、台风&#xff09;、极端环境&#xff08;无人区&#xff09;及网络管制&#xff08;欠费停机&#xff09;等场景下&#xff0c;传统中心化网络易因核心节点失效导致全局瘫痪。本方案提出构建去中心化设备网络&…

【5G学习】基本概念之多频资源以及子载波和信道

在5G通信中&#xff0c;子载波、信道以及时域、频域、码域、空域是构建无线传输系统的核心概念。它们共同定义了信号的传输方式、资源分配和多维复用技术。以下是详细解释及其相互关系&#xff1a; 一、核心概念定义 1. 子载波&#xff08;Subcarrier&#xff09; 定义&#…

Coze 和 n8n 的详细介绍及多维度对比分析,涵盖功能、架构、适用场景、成本等关键指标

以下是 Coze 和 n8n 的详细介绍及多维度对比分析&#xff0c;涵盖功能、架构、适用场景、成本等关键指标&#xff1a; 一、Coze 详细介绍 1. 基础信息 类型&#xff1a;低代码自动化平台&#xff08;SaaS&#xff09;。开源性&#xff1a;闭源&#xff08;企业版需付费&…

分发饼干问题——用贪心算法解决

目录 一&#xff1a;问题描述 二&#xff1a;解决思路 贪心策略&#xff08;C语言&#xff09;算法复习总结3——贪心算法-CSDN博客 三&#xff1a;代码实现 四&#xff1a;复杂度分析 一&#xff1a;问题描述 分发饼干问题是一个经典的可以使用贪心算法解决的问题&#xf…

【Python爬虫】简单案例介绍4

本文继续接着我的上一篇博客【Python爬虫】简单案例介绍3-CSDN博客 目录 3.4 完整代码 3.4 完整代码 此小节给出上述案例的完整代码&#xff0c; # encodingutf-8 import re, json, requests, xlwt, csv import pandas as pd from lxml import etree from bs4 import Beauti…

使用ADB工具分析Android应用崩溃原因:以闪动校园为例

使用adb工具分析模拟器或手机里app出错原因以闪动校园为例 使用ADB工具分析Android应用崩溃原因&#xff1a;以闪动校园为例 前言 应用崩溃是移动开发中常见的问题&#xff0c;尤其在复杂的Android生态系统中&#xff0c;找出崩溃原因可能十分棘手。本文将以流行的校园应用&q…

【蓝桥云课】男女搭配 python

题目 题目 题解 import mathT int(input()) for _ in range(T):N, M, K map(int, input().split())people_num N M# 目前为止可以组成的队数group_num min(N // 2, M)if people_num - group_num * 3 < K:group_num-math.ceil((K-(people_num - group_num * 3))/3)pr…

edge 更新到135后,Clash 打开后,正常网页也会自动跳转

发现了一个有意思的问题&#xff1a;edge 更新135后&#xff0c;以前正常使用的clash出现了打开deepseek也会自动跳转&#xff1a; Search Resultshttps://zurefy.com/zu1.php#gsc.tab0&gsc.qdeepseek &#xff0c;也就是不需要梯子的网站打不开了&#xff0c;需要的一直正…

MCP协议实战指南:在VS Code中实现PostgreSQL到Excel的自动化迁移

作者&#xff1a;后端小肥肠 &#x1f34a; 有疑问可私信或评论区联系我。 &#x1f951; 创作不易未经允许严禁转载。 姊妹篇&#xff1a; 从PDF到精准答案&#xff1a;Coze助力RAGFlow框架提升数据召回率_提升ragflow-CSDN博客 CozeTreeMind实测&#xff1a;秒出ISO标准流程图…

大模型微调(PEFT)

大模型微调&#xff08;PEFT&#xff09; PEFT&#xff08;Parameter-Efficient Fine-Tuning&#xff09;一、PEFT 核心方法1. LoRA&#xff08;Low-Rank Adaptation&#xff09;2. Adapter3. Prefix Tuning4. Prompt Tuning5. QLoRA&#xff08;Quantized LoRA&#xff09; 二…

flutter 打包mac程序 dmg教程

✅ 前提条件 ✅ 你已经在 macOS 上安装了 Android Studio Flutter SDK。 ✅ Flutter 支持 macOS 构建。 运行下面命令确认是否支持&#xff1a; Plain Text bash 复制编辑 flutter doctor ---## &#x1f9f1; 第一步&#xff1a;启用 macOS 支持如果是新项目&#xff0c;…

鸿蒙开发-动画

1. 动画-动画特效 // 定义接口 (每个列表项的数据结构) interface ImageCount {url: stringcount: number }// 需求1: 遮罩层显隐 透明度opacity 0-1 层级zIndex -1~99 // 需求2: 图片缩放 缩放scale 0-1Entry Component struct Index {// 基于接口, 准备数据State images…

js:循环查询数组对象中的某一项的值是否为空

循环检查 selinfo 数组中的每一个对象&#xff0c;判断其中的 po_qty 和 price 是否为空&#xff08;null、undefined 或空字符串 ""&#xff09;&#xff0c;可以使用以下几种方法&#xff1a; 方法1&#xff1a;使用 forEach 循环检查每一项 const selinfo this.…

x-cmd install | jellex - 用 Python 语法在终端里玩转 JSON 数据!

目录 核心功能与特点安装优势亮点适用场景 还在为命令行下处理 JSON 数据烦恼吗&#xff1f;jellex 来了&#xff01;它是一款基于终端的交互式 JSON 和 JSON Lines 数据处理工具&#xff0c;让你用熟悉的 Python 语法&#xff0c;轻松过滤、转换和探索 JSON 数据。 核心功能与…

4月份到9月份看6本书第二天【ERP与企业管理】

ERP与企业管理 1-11章全面介绍了ERP的基本原理、物料管理功能、计划功能、生产和采购管理功能、效益以及实施和应用ERP为企业带来的深层次的变化。 第12章讨论了软件系统的选型。 第13章介绍了ERP实施和运行管理的方法 第14章介绍了国际上广泛使用的ERP实施应用的评估方法。…

Opencv计算机视觉编程攻略-第十三节 跟踪视频中的物品

这是opencv系列的最后一节&#xff0c;主要学习视频序列&#xff0c;上一节介绍了读取、处理和存储视频的工具&#xff0c;本文将介绍几种跟踪图像序列中运动物体的算法。可见运动或表观运动&#xff0c;是物体以不同的速度在不同的方向上移动&#xff0c;或者是因为相机在移动…