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

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后,它会在代码或资源更改时自动处理应用的更新,从而避免了手动重启的繁琐。

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

相关文章:

  • PINNs案例——二维磁场计算
  • 彻底理解Spring三级缓存机制
  • SOD-123和SOD-123FL封装到底有什么区别?
  • Python训练营打卡 Day42
  • CS144 - Lecture 2
  • day 1 任务以及具体安排:第一章 数组part01
  • 6月1日星期日今日早报简报微语报早读
  • Python6.1打卡(day33)
  • LeetCode 热题 100 155. 最小栈
  • Broker、Proxy、Agent的区别
  • 用提示词写程序(3),VSCODE+Claude3.5+deepseek开发edge扩展插件V2
  • C++ 开发,将数值转换为字符串问题,不能直接拼接引号
  • HarmonyOS NEXT~鸿蒙开发工具CodeGenie:AI驱动的开发效率革命
  • 火语言UI组件--文件对话框
  • chrome.runtime.sendMessage 和 new FormData()
  • SRD-12VDC-SL-C 继电器‌接线图解
  • golang -- slice 底层逻辑
  • 针对 Harmony-Cordova 性能优化,涵盖原生插件开发、线程管理和资源加载等关键场景
  • 某航后缀混淆逆向与顶像风控分析
  • 第十五章 访问控制
  • DelphiXe12创建DataSnap REST Application
  • 深度学习篇---face-recognition的优劣点
  • 计算机视觉---YOLOv5
  • 多模态大语言模型arxiv论文略读(102)
  • HackMyVM-Jabita
  • AI精准挖掘SEO关键词策略
  • Spring Security安全实践指南
  • 《操作系统真相还原》——进入内核
  • NodeJS全栈开发面试题讲解——P11消息队列(MQ)
  • 杨校老师竞赛课之GESP一级C++[2024-12]真题及题解