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

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 应用的热部署行为,提升开发效率。

相关文章:

  • 行业标准 | IT服务技术与标准研讨会在京召开
  • Qt文件读写
  • AMGCL库的Backends及使用示例
  • Java基础:Stream流操作
  • 【软考系统架构设计师】信息安全技术基础知识点
  • 25级总分413数学一142专业124东南大学820考研经验电子信息通信工程,真题,大纲,参考书。
  • 开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-集成心知天气(二)
  • 深入理解 HTML5 语义元素:提升网页结构与可访问性
  • 【C++】中memcpy的使用
  • 校园AI体育:科技赋能教育,运动点亮未来
  • 【集成电路版图设计学习笔记】1. Introduction to Layout Design
  • k8s蓝绿发布
  • 软件系统安全设计方案,信息化安全建设方案(Word原件)
  • cookie、session、token、jwt、oauth
  • ESP32开发之ubuntu环境搭建
  • 岛屿问题——DFS、BFS
  • 高并发秒杀系统设计:关键技术解析与典型陷阱规避
  • 【Linux】Rhcsa复习 2
  • 基于51单片机语音实时采集系统
  • 仙剑奇侠传98柔情版游戏秘籍
  • 基于html+css的个人网站设计论文/专业全网优化
  • 网站用户注册怎么做/南宁seo优势
  • 手机网站建设推广/青岛今天发生的重大新闻
  • 网站搭建和网页设计/爱站seo工具包官网
  • 网站集约化建设力度/百度seo排名点击器app
  • 产品开发流程文件/班级优化大师的功能