You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring如何彻底禁用模板与静态文件缓存 避免修改后重建项目

Spring Boot 开发环境热更新配置方案

你现有devtools依赖和基础配置逻辑正确,修改代码/资源后需手动重建才生效,核心原因是IDE未开启自动同步、devtools监听规则不全、资源读取走了缓存路径,按以下步骤调整即可实现修改即时生效:

1. 开启IDE自动编译

devtools的热更新触发前提是:修改的文件被IDE自动编译/同步到输出类路径,否则devtools感知不到文件变化。

  • IntelliJ IDEA配置:
    1. 进入 Settings > Build, Execution, Deployment > Compiler,勾选 Build project automatically
    2. 按下 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.14 16:15:48