从 Boot 3 升到 4 不是改个版本号就完事。我实际踩到的三个坑,按"会让你编译不过"的程度排序。
一、and() 被移除
Spring Security 7 把链式调用的 and() 从整个 builder 层级删掉了,旧写法直接编译失败:
// ❌ 编译不过
http.csrf().disable().authorizeRequests()...
// ✅ 只能 lambda DSL
http.csrf(csrf -> csrf.disable())
.authorizeHttpRequests(auth -> auth.anyRequest().authenticated());
二、测试 starter 被拆开
@WebMvcTest 已经不在 spring-boot-test-autoconfigure 里了,新包名是 org.springframework.boot.webmvc.test.autoconfigure,依赖也要换成 spring-boot-starter-webmvc-test。
三、parent 坐标别写错
这条最坑:Spring Initializr 会给你生成 4.1.1.RELEASE,这个坐标在 Maven Central 上是 404。 Boot 从 2.4 起就不带 .RELEASE 后缀了。
| 写法 | 结果 |
|---|---|
4.1.1.RELEASE |
❌ 404 |
4.1.1 |
✅ 正确 |
教训:任何"工具生成的东西"都要自己验证一遍,尤其是版本号这种看起来最不可能出错的地方。
