Spring如何彻底禁用模板与静态文件缓存 避免修改后重建项目
Spring Boot 开发环境热更新配置方案
你现有devtools依赖和基础配置逻辑正确,修改代码/资源后需手动重建才生效,核心原因是IDE未开启自动同步、devtools监听规则不全、资源读取走了缓存路径,按以下步骤调整即可实现修改即时生效:
1. 开启IDE自动编译
devtools的热更新触发前提是:修改的文件被IDE自动编译/同步到输出类路径,否则devtools感知不到文件变化。
- IntelliJ IDEA配置:
- 进入
Settings > Build, Execution, Deployment > Compiler,勾选 Build project automatically - 按下
Ctrl+Shift+Alt+/(Windows/Linux)/Cmd+Shift+Option+/(Mac)调出Registry面板,勾选compiler.automake.allow.when.app.running,重启IDE让配置生效
- 进入
- Eclipse/STS配置:默认自带自动编译能力,只需确认
Project > Build Automatically处于勾选状态即可
2. 补全devtools与资源缓存配置
默认配置下devtools不会主动监听源码目录下的静态资源、模板变更,同时Spring Web默认会缓存静态资源映射,需要在application.yml中补充以下配置:
spring: thymeleaf: cache: false # 开发环境直接读取源码路径下的模板文件,不走编译输出目录缓存 prefix: file:src/main/resources/templates/ cache: type: none web: resources: # 静态资源直接读取源码路径 static-locations: file:src/main/resources/static/,file:src/main/resources/public/ chain: # 关闭静态资源链缓存 cache: false devtools: restart: enabled: true # 额外添加需要监听的源码资源路径 additional-paths: - src/main/java - src/main/resources # 静态资源、模板变更不触发应用重启,直接热加载 exclude: static/**,public/**,templates/**
如果你是通过Maven命令mvn spring-boot:run启动项目,还需要在pom.xml中给Spring Boot插件添加fork配置,否则devtools无法正常工作:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin>
3. 关闭浏览器端静态资源缓存
后端缓存全部关闭后如果还是看不到静态文件更新,一般是浏览器本地缓存导致的。开发时打开浏览器开发者工具(F12),在Network面板勾选Disable cache(该配置仅在开发者工具打开时生效),刷新页面即可拿到最新资源。
效果验证
配置完成后重启一次应用:
- 修改Java代码后,devtools会通过双类加载器快速重启应用,耗时远低于手动冷启动
- 修改Thymeleaf模板、CSS/JS等静态文件时,不需要重启应用,直接刷新浏览器就能看到更新后的效果
内容的提问来源于stack exchange,提问作者user3429660
相关产品推荐
相关产品推荐

