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

Spring Boot DevTools 热部署

在Spring Boot项目中加入 spring-boot-devtools 热部署依赖启动器后,通常不需要手动重启项目即可让更改生效。spring-boot-devtools 的核心特性之一就是自动重启或热加载。


Spring Boot DevTools 热部署关键知识点 🔥

  • 目的spring-boot-devtools 模块旨在提升开发阶段的效率。它提供了诸如自动重启、LiveReload、属性默认值优化等功能。
  • 自动重启 (Automatic Restart)
    • devtools 检测到类路径上的文件发生变化(例如,.class 文件被重新编译)时,它会自动重启应用程序。
    • 这种重启通常比手动停止和启动要快得多,因为它使用了一个特殊的类加载器,只重新加载应用程序的类,而不会重新加载第三方库的类。
    • 触发条件:在IDE中修改并保存Java代码,IDE自动编译后,devtools会检测到变化并触发重启。
  • LiveReload (实时重新加载)
    • devtools 内嵌了一个 LiveReload 服务器。当资源文件(如HTML、CSS、JavaScript、Thymeleaf模板等)发生变化时,它可以触发浏览器自动刷新。
    • 需要浏览器安装 LiveReload 插件。
  • 如何生效
    1. 在项目的 pom.xml (Maven) 或 build.gradle (Gradle) 文件中添加 spring-boot-devtools 依赖。
      <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional>
      </dependency>
      
    2. 确保IDE配置为在保存文件时自动编译项目(大多数现代IDE默认如此)。
    3. 启动应用程序。
    4. 之后,当你修改并保存Java代码或资源文件时:
      • 对于Java代码更改:IDE编译后,devtools 会自动重启应用。你可以在控制台看到重启的日志。
      • 对于静态资源或模板更改:如果配置了LiveReload,浏览器会自动刷新。
  • 无需手动重启devtools 的设计初衷就是为了避免频繁的手动重启。如果添加了依赖后仍然需要手动重启才能看到更改,可能是IDE的编译设置问题,或者某些特定类型的更改可能不会触发自动重启(尽管这种情况较少见)。
  • 生产环境禁用:当应用程序打包成可执行的 JAR 或 WAR 文件并以 java -jar 方式运行时,devtools 会自动禁用,不会对生产环境造成影响。这是通过检查是否使用了特殊的 “restart ClassLoader” 来判断的。
  • 自定义重启排除:可以通过 spring.devtools.restart.exclude 属性配置某些路径下的文件更改不触发自动重启。

总结:spring-boot-devtools 的核心价值在于其自动特性,引入依赖并正确配置IDE后,它会在代码或资源更改时自动处理应用的更新,从而避免了手动重启的繁琐。

相关文章:

  • MATLAB实战:传染病模型仿真实现
  • RocketMQ 学习
  • 中国高分辨率高质量地面CO数据集(2013-2023)
  • 8088 单板机 汇编 NMI 中断程序示例 (脱离 DOS 环境)
  • 爬虫入门:从基础到实战全攻略
  • 深入浅出MQTT协议:从物联网基础到实战应用全解析
  • nt!MiDispatchFault函数里面的nt!IoPageRead函数分析和nt!MiWaitForInPageComplete函数分析
  • ArcPy错误处理与调试技巧(3)
  • SRE 基础知识:在站点可靠性工程中可以期待什么
  • Mac电脑上本地安装 MySQL并配置开启自启完整流程
  • 数字创新智慧园区建设及运维方案
  • go环境配置
  • MATLAB中properties函数用法
  • 【Linux命令】scp远程拷贝
  • 考研系列—操作系统:第五章、输入输出(I/O)管理
  • 【笔记】在 MSYS2(MINGW64)中安装 python-maturin 的记录
  • 【python深度学习】Day 42 Grad-CAM与Hook函数
  • 关于langchain使用API加载model的方式
  • C++基础算法————广度优先搜索(BFS)
  • Spring AI调用Ollama+DeepSeek
  • 广州建企业网站/seo对网店推广的作用
  • 深圳网站建设代理商/品牌策划是做什么的
  • wap网站开发流程/百度上怎么做推广
  • wordpress自带图片大小/张家界百度seo
  • 网站建设培训学院/免费访问国外网站的app
  • 墨刀做网站网页/官网seo优化找哪家做