css文件必须放在src/main/resources/static/下才能被直接访问,因spring boot仅从classpath的四个位置加载静态资源,其中/static支持目录结构1:1映射为url路径;thymeleaf中需用@{/css/style.css}引入,不可写/static前缀;自定义路径会覆盖默认配置,需谨慎配置;开发时修改不生效常因浏览器或ide缓存导致。

CSS文件必须放在 src/main/resources/static/ 下才能被直接访问
Spring Boot 默认只从 classpath 的四个位置加载静态资源:classpath:/static、classpath:/public、classpath:/resources、classpath:/META-INF/resources。其中只有 /static 支持目录结构 1:1 映射为 URL 路径——这意味着你放 src/main/resources/static/css/style.css,浏览器就能通过 /css/style.css 直接访问。
常见错误现象:
- 把 CSS 放在
src/main/resources/根目录下,访问/style.css404 - 放在
src/main/resources/templates/下,完全不生效(该目录仅用于模板渲染) - 误以为要加
/static/前缀,写成/static/css/style.css——实际路径中不带static
thymeleaf 模板里引入 CSS 的写法要带 @{...} 表达式
如果用 Thymeleaf 渲染 HTML,不能直接写 <link href="css/style.css">,否则在非根路径(如 /user/list)下会解析成相对路径 /user/css/style.css,导致 404。
正确写法是使用 Thymeleaf 的 URL 表达式:
<link th:href="@{/css/style.css}" rel="stylesheet">
说明:
-
@{...}会自动补全上下文路径(如项目部署在/myapp下,也会正确生成/myapp/css/style.css) - 路径以
/开头,表示从应用根路径开始,不是当前页面路径 - 不要写成
@{/static/css/style.css}——static是源码目录名,不是 URL 路径的一部分
自定义静态资源路径时,spring.web.resources.static-locations 会覆盖默认配置
如果在 application.properties 中设置了:
将 Spring Boot 2.7 项目升级到 Spring Boot 3.5 的实战流程,覆盖版本基线、依赖坐标替换、Jakarta 迁移、配置兼容、异步上下文传递改造与验证门禁。用于企业多模块 Maven 项目升级与排障。
spring.web.resources.static-locations=classpath:/custom-static/
那么默认的 /static、/public 等路径就全部失效,只认 custom-static 目录。这容易导致原有 CSS 突然 404。
想追加路径而不是替换,得用 Java 配置类方式:
@Configuration<br>public class WebMvcConfig implements WebMvcConfigurer {<br> @Override<br> public void addResourceHandlers(ResourceHandlerRegistry registry) {<br> registry.addResourceHandler("/css/**")<br> .addResourceLocations("classpath:/static/css/", "classpath:/custom-css/");<br> }<br>}
注意点:
-
addResourceLocations()可传多个路径,但顺序影响查找优先级 - 每个路径末尾必须有
/,否则启动报错 - 修改后需重启应用,热部署不一定刷新静态资源映射
开发时 CSS 修改不生效?别忘了检查 IDE 缓存和构建输出
常见现象:改了 style.css,刷新页面样式没变。原因往往不在 Spring Boot 配置,而在开发环境本身。
排查步骤:
- 确认浏览器是否缓存:强制刷新(
Ctrl+Shift+R)或禁用缓存(DevTools → Network → Disable cache) - 检查 IDEA 是否已将文件编译进
target/classes/static/—— 有时复制文件后未触发自动同步 - 执行
Maven → Rebuild project,确保static目录内容已拷贝到target/classes - 查看
target/classes/static/css/style.css文件内容是否是最新的
最隐蔽的坑是:IDEA 的 “Build project automatically” 有时对资源文件更新不敏感,手动 rebuild 才真正可靠。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










