欢迎光临
我们一直在努力

Boot4升后DevTools热重载怎么开

升 Boot4 后,DevTools Live Reload 默认关闭。本稿讲怎么认、怎么用 spring.devtools.livereload.enabled=true 打开、怎么验,不写 jar 脚本或 endpoint access。

同系列:endpoint 启用属性怎么改、可执行 jar 启动脚本怎么改、Hazelcast 会话怎么迁、Kafka retry 属性怎么改——一句对照,不写进本稿交付。

Boot4 升后为什么 Live Reload 不自动开了?

Spring Boot 4.0 Migration Guide · DevTools Live Reload Support 写得很直:

DevTools Live Reload support is now disabled by default. If you want to use live reload please set spring.devtools.livereload.enabled to true.

也就是说:不是「升完 DevTools 坏了」,而是 4.0 把 Live Reload 从默认 ON 改成了默认 OFF。以前靠改静态资源 / 模板就能让浏览器自动刷的体验,升到 Boot4 后如果没显式打开,常见现象是:

现象大致原因
改 static / templates 后浏览器不刷新 Live Reload 默认关
IDE 里「热重载」感觉半截:应用 restart 了,页面不跟 restart ≠ LiveReload(见后文)
多模块 / 多应用一起起,只有第一个像有 LiveReload 文档:同一时刻只能跑一个 LiveReload 服务
误以为是可执行 jar 脚本或 CLASSIC loader 的锅 不是同一坑(见边界)

Developer Tools 参考文档 · LiveReload 同口径:嵌入的 LiveReload server 要用来触发浏览器刷新时,把 spring.devtools.livereload.enabled 设为 true。

本稿只盯 Live Reload 默认关 → 怎么显式打开、怎么验,其它 Boot4 主题见文首内链。

先过一张迁移总览图:

图:Boot3 常默认可用 → Boot4 默认 OFF → 设 livereload.enabled=true → 对照 Guide + 本地冒烟恢复。

要用哪个属性重新打开热重载?

按 Migration Guide / DevTools 文档,主开关就一条:

spring.devtools.livereload.enabled=true

YAML 示意

spring:
devtools:
livereload:
enabled: true

properties 示意

spring.devtools.livereload.enabled=true

也可以写进机器级全局配置(文档 Global Settings):$HOME/.config/spring-boot/spring-boot-devtools.properties(或 yaml/yml),让本机所有用 DevTools 的 Boot 应用都默认打开——适合「团队统一开发体验」而不是每个仓库各写一遍。

文档还提醒两件前置:

  • 同一时刻只能跑一个 LiveReload server。起应用前确认没有别的 LiveReload 在跑;IDE 一次起多个应用时,通常只有第一个带 LiveReload。
  • 要触发 LiveReload,Automatic Restart 必须启用。关掉 spring.devtools.restart.enabled 再指望改文件刷浏览器,文档口径对不上。
  • 另外:完整打包(java -jar 等)场景下 DevTools 会按「生产应用」自动禁用——本地 IDE / bootRun 开发态才是本稿主战场。生产环境不要为了「热刷」去硬开 DevTools。

    和可执行 jar 脚本移除是同一坑吗?

    不是。 169323724 讲的是 Boot4 Features Removed 里可执行 jar 的 launch scripts 不再生成 / 需改启动方式;本稿是 DevTools Live Reload 默认策略变更。

    维度Live Reload(本稿)可执行 jar 启动脚本
    文档落点 Migration Guide · DevTools Live Reload Support Features Removed · launch scripts
    症状 浏览器不自动刷新 打包产物/启动脚本行为变了
    改法 spring.devtools.livereload.enabled=true 改启动方式 / 脚本策略(见专文)
    是否混判 勿混 勿混

    升版评审时拆成两条 checklist:一条「开发机 Live Reload」,一条「产物启动脚本」。混在一个 MR 里,日志对不上号。

    和 classic loader 移除怎么区分?

    主线不同。 CLASSIC loader / 相关 loader 移除属于另一类 Features Removed(brief 备选 C’),和「Live Reload 默认关」不是同一段 Guide。实务上:

    • 你在排查 浏览器不刷新 / LiveReload 端口没起来 → 走本稿:livereload.enabled;
    • 你在排查 loader / classpath / 旧 CLASSIC 配置残留 → 另开专文,不要拿 livereload.enabled 去顶。

    同样,endpoint access(昨日 169441413)管的是 Actuator 启用语义,和 DevTools 浏览器刷新无关。

    边界:4.1.0 Deprecated 怎么理解?

    DevTools 文档在 LiveReload 节另有一句(以当前文档为准):

    Given its decrease in popularity and support, the LiveReload feature is deprecated as of Spring Boot 4.1.0 with no replacement.

    写作边界必须咬死:

    版本语境本稿怎么写禁止写法
    Boot 4.0 升版(本稿主线) Live Reload 默认关闭;用 spring.devtools.livereload.enabled=true 显式打开 说「属性已经没了」「4.0 就不能开」
    文档标注 4.1.0 Deprecated 知晓后续弃用走向;不改变 4.0「默认关→显式开」验收路径 把 Deprecated 写成「4.0 属性已消失」
    证据外的「替代方案」 不编造 官方未给出的替换开关 瞎推第三方当「官方 Replacement」

    一句话:升到 4.0 要热刷 → 仍用这条属性打开;Deprecated 是后续版本走向提示,不是让你在 4.0 稿子里删掉配置段。

    怎么快速核自己的 application 配置?

    验收不要只看「应用能启动」。建议把门禁写成可勾选步骤:

    图:对照 Guide → 设 enabled=true → 查 DevTools 依赖与 Restart → 本地冒烟 → 边界(勿混 jar/endpoint · Deprecated≠消失)。

    1. 对照官方源

    打开 Migration Guide 的 DevTools Live Reload Support 小节,确认仍是「disabled by default + spring.devtools.livereload.enabled=true」。再打开 devtools 文档 LiveReload 核同一属性名。

    2. 改配置并确认依赖

    • 仓库 / profile / 全局 spring-boot-devtools.* 里写上 spring.devtools.livereload.enabled=true;
    • 构建里仍有 spring-boot-devtools(Maven optional / Gradle developmentOnly 常见写法见文档);
    • 不要在生产打包里为了「能刷页面」去 excludeDevtools=false 硬塞——那是另一安全面。

    3. 本地冒烟

  • IDE 或 bootRun 启动开发应用;
  • 日志里找 LiveReload 相关启动信息(文档示例口径会出现 LiveReload server 在约定端口运行);
  • 改一处静态资源或模板(文档:部分路径变更触发 live reload 而非 full restart);
  • 浏览器装好 LiveReload 扩展(Chrome / Firefox / Safari,文档指引按商店搜 LiveReload);
  • 确认页面随之刷新。
  • 若 restart 正常、LiveReload 仍无:查是否多个 LiveReload 抢端口、是否把 restart.enabled 关了、是否其实跑的是打包后的「生产形态」进程。

    4. 全文搜「假绿」配置

    检查项期望
    spring.devtools.livereload.enabled 开发 profile 为 true(若你需要热刷)
    spring.devtools.restart.enabled 未为了「省事」整段关掉(否则 LiveReload 触发条件不满足)
    多应用并行 只有需要热刷的那个占 LiveReload
    与 jar 脚本 / endpoint access 清单 分列,勿同一行改完

    restart 和 LiveReload 是一回事吗?

    不是。 文档结构上分两节:

    能力管什么典型属性
    Automatic Restart classpath 变更后重启应用(双 classloader) spring.devtools.restart.*
    LiveReload 资源变更后刷浏览器 spring.devtools.livereload.enabled

    文档明确:要触发 LiveReload,Automatic Restart 须启用。实务排障口诀:

  • 先看进程有没有按预期 restart;
  • 再看 LiveReload 服务有没有起来、浏览器扩展有没有连上;
  • 别把「关掉 restart 想省时间」和「还要浏览器热刷」写进同一套配置。
  • 哪些文件变更会触发 LiveReload?

    文档在 Automatic Restart 的「Excluding Resources」里说明:默认情况下,改 /META-INF/maven、/META-INF/resources、/resources、/static、/public、/templates 不会触发完整 restart,但会触发 live reload。这也是前端同学改静态页 / 模板时期望「只刷浏览器、别整应用重启」的路径。

    升 Boot4 后若这条链路断了,优先怀疑的是 Live Reload 默认关,而不是「排除路径规则突然变了」。排除规则仍可用 spring.devtools.restart.exclude / additional-exclude 调;但排除再准,没打开 livereload.enabled,浏览器也不会跟。

    实务建议把验收拆成两步:

  • 改一处 static 下的 CSS/HTML,确认(在 enabled=true 且扩展连上后)浏览器刷新;
  • 改一处 Java 源码并编译进 classpath,确认应用 restart——这验证的是 Restart,不是 LiveReload。
  • 两步都绿,才算 DevTools 开发体验回到「升版前手感」;只绿一步,就按上表对号入座,别互相顶锅。

    多 profile / 配置中心怎么落?

    很多团队把 DevTools 相关键放在 application-local.yml 或个人全局文件,避免进生产 profile。升 Boot4 时最容易漏的是:

    落点风险建议
    仅写在「以前默认 ON、所以仓库里根本没键」 升 4.0 后静默变 OFF 开发 profile 显式写 livereload.enabled=true
    写在共享 application.yml 且打进生产包 生产误开 DevTools 用 local / dev profile,或机器级 $HOME/.config/spring-boot/
    配置中心推送旧「布尔开关面板」 中心无此键、本地以为开了 升版清单里把 livereload.enabled 加进开发配置模板
    文档看到 4.1.0 Deprecated 就删键 4.0 线上开发机直接没热刷 4.0 主线仍保留显式 true;弃用走向另开技术债单

    合主分支前用一次「干净 clone + 只起 local profile」回归:不依赖某人本机全局文件里的隐藏配置。全局文件适合个人提效,不适合当团队唯一真相源。

    常见误判怎么排?

    按出现频率从高到低:

    1. 升完以为 DevTools「整模块坏了」 其实 Automatic Restart 往往还在,只是浏览器不刷。先看日志有没有 LiveReload server;没有就查 livereload.enabled。

    2. 把 jar 启动脚本移除当成热重载故障 java -jar 本就会按生产形态禁用 DevTools。你在验打包产物却指望热刷,路径就错了——回 IDE / bootRun 验 LiveReload,jar 脚本问题另见专文。

    3. IDE 同时起两个 Boot 应用 文档:只能有一个 LiveReload。第二个「怎么配都不刷」时,先停掉多余实例,而不是继续加属性。

    4. 关了 restart 想「省 CPU」 LiveReload 触发依赖 Automatic Restart 启用。关 restart 等于砍断触发链。

    5. 看到 Deprecated 就删配置 4.1.0 弃用提示 ≠ 4.0 属性无效。本稿验收路径不变:默认关 → 显式开。

    6. 和 endpoint access / Hazelcast / Kafka retry 绑同一 MR 症状域完全不同,日志关键字也不同。分 MR,评审更快,回滚更干净。

    团队升版清单(开发体验条)

    把下面几行贴进 Boot4 升版 runbook 的「本地开发」小节即可:

  • Migration Guide 确认 Live Reload disabled by default;
  • 开发 profile / 全局 devtools 文件写入 spring.devtools.livereload.enabled=true;
  • 确认 spring-boot-devtools 仍在开发依赖里;
  • 确认未误关 spring.devtools.restart.enabled;
  • 单实例启动,日志核 LiveReload;浏览器扩展连通;改 static 冒烟;
  • 注明:与 launch scripts、endpoint access、CLASSIC loader 分列;
  • 注明:4.1.0 Deprecated 另建债项,不在本 4.0 升版 MR 删键。
  • 做完这七步,开发同学对「热重载怎么开」的问题应能自助关闭,不必再在群里反复问「是不是 Boot4 把 DevTools 砍了」。

    FAQ

    Boot4 升后为什么 Live Reload 不自动开了? Migration Guide:DevTools Live Reload support is now disabled by default。

    要用哪个属性重新打开热重载? spring.devtools.livereload.enabled=true(YAML / properties / 全局 devtools 配置均可)。

    和可执行 jar 脚本移除是同一坑吗? 不是。jar 是 launch scripts 移除;本稿是 Live Reload 默认策略变更。

    和 classic loader 移除怎么区分? CLASSIC loader 属另一 Features Removed 线;浏览器不刷新优先查 livereload.enabled,勿混判。

    怎么快速核自己的 application 配置? 对照 Migration Guide + DevTools 文档 → 写上 enabled=true → 确认 DevTools 依赖与 Restart 启用 → IDE 冒烟(日志 + 改静态资源刷浏览器)。注意 4.1.0 Deprecated 提示,勿写成 4.0 属性已消失。

    小结 checklist

    • 认清变更:Boot4 Live Reload 默认关闭
    • 打开方式:spring.devtools.livereload.enabled=true
    • 前置:依赖 spring-boot-devtools;Automatic Restart 保持启用
    • 约束:同一时刻一个 LiveReload server;开发态而非 java -jar 生产形态
    • 对照源:Migration Guide + devtools 文档
    • 边界:4.1.0 Deprecated ≠ 4.0 属性消失;勿编造 Replacement
    • 勿与 jar 脚本 / endpoint access / Hazelcast Session / Kafka retry / CLASSIC loader 混主线
    • 本地冒烟:日志有 LiveReload + 改资源浏览器刷新

    按「对照 Guide → 显式 enabled=true → 查 Restart/依赖 → IDE 冒烟」改完,这类踩坑通常一次就能闭环。别在 jar 脚本 / Actuator 两侧来回猜。其它 Boot4 能力见前述内链,本文不展开。

    封面建议:深色升级风,左侧大字 Live Reload 默认 OFF,中间箭头指向 spring.devtools.livereload.enabled=true;右侧浏览器刷新图标;角标「勿混 jar 脚本 · 勿混 endpoint access」;标题区放锁定 SEO 标题「Boot4升后DevTools热重载怎么开」。

    赞(0)
    未经允许不得转载:171主机测评 » Boot4升后DevTools热重载怎么开
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址