---
title: "升到 Spring Boot 4.0：先稳住 3.5.x，再拆模块与配置 - Angryecho"
description: "要把现有应用迁到 Spring Boot 4.0，官方迁移指南给出的顺序很明确：先升到最新的 3.5.x，再动大版本。这样可以先把依赖和弃用 API 在旧线上清干净，再面对 4.0 的模块拆分和配置改名。["
canonical_url: "https://www.angryecho.com/c/java/p/P2TBBo2TMmn8QYsF5AOlH"
meta:
  "og:description": "要把现有应用迁到 Spring Boot 4.0，官方迁移指南给出的顺序很明确：先升到最新的 3.5.x，再动大版本。这样可以先把依赖和弃用 API 在旧线上清干净，再面对 4.0 的模块拆分和配置改名。["
  "og:image": "https://www.angryecho.com/_og/d/c_Post%2Ctitle_~5ZCQ5qe9572R%2Cdescription_~5ZCQ5qe95LiA5LiL77yM5bCx5LiK5ZCQ5qe9572R44CC%2CpostId_P2TBBo2TMmn8QYsF5AOlH%2Crevision_~MjAyNi0xMC0yN1QwMjo1Nzo0OS4yMjMzNTBa%2Cp_Ii9jL2phdmEvcC9QMlRCQm8yVE1tbjhRWXNGNUFPbEgi%2Cs_kddMO3s4Eiq8-560.png"
  "og:image:height": "630"
  "og:image:type": image/png
  "og:image:width": "1200"
  "og:title": "升到 Spring Boot 4.0：先稳住 3.5.x，再拆模块与配置"
---

> Index of every page on this site: [llms.txt](https://www.angryecho.com/llms.txt)

# **升到 Spring Boot 4.0：先稳住 3.5.x，再拆模块与配置**

要把现有应用迁到 Spring Boot 4.0，官方迁移指南给出的顺序很明确：先升到最新的 3.5.x，再动大版本。这样可以先把依赖和弃用 API 在旧线上清干净，再面对 4.0 的模块拆分和配置改名。\[1]

## 准备工作

- 运行时：Java 17 及以上（建议用当前 LTS）；Kotlin 需 2.2+；若用 GraalVM native-image，需 v25+。
- Spring Boot 4 基于 Jakarta EE 11，Servlet 基线为 6.1；自行管依赖时须对齐 Spring Framework 7.x。
- 对照官方 3.5.x 与 4.0.x 的依赖管理差异；Spring Cloud 等未由 Boot 托管的组件，先查清兼容版本再升。
- 列一张「本项目用到的技术清单」：WebMVC/WebFlux、JPA、Flyway、Security、Kafka、Batch 等，后面要按清单换 starter。

## 操作步骤

### 1、升到最新 3.5.x 并清掉弃用调用

先把工程升到最新可用的 3.5.x 维护版，编译跑通测试。逐个检查对已弃用类/方法的调用——这些在 4.0 会被删除。做完这一步，再改 BOM 到 4.0 最新维护版。\[1]

**怎么确认成功：** 工程在 3.5.x 上构建、测试全绿，且业务代码触发的 deprecation 警告已清理或有替换方案。

### 2、用 properties migrator 兜住配置改名

4.0 里不少 `application.properties` / `application.yml` 键被重命名或删除。可临时加入：

```xml
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-properties-migrator</artifactId>
  <scope>runtime</scope>
</dependency>
```

Gradle 则用 `runtimeOnly("org.springframework.boot:spring-boot-properties-migrator")`。启动时它会打印诊断，并在运行期临时迁移旧键。迁移完成后务必删掉该依赖。\[1]

**怎么确认成功：** 启动日志里旧键告警消失，配置已改成新键名，去掉 migrator 后行为不变。

### 3、按技术补齐 starter，必要时先用 classic 过渡

4.0 改成更细的模块：例如以前只引 Flyway/Liquibase 第三方包就能自动配置，现在要换成 `spring-boot-starter-flyway` / `spring-boot-starter-liquibase`。测试侧同理，优先用 `spring-boot-starter-<tech>-test`。若一时理不清依赖，可先用 `spring-boot-starter-classic`（及 `spring-boot-starter-test-classic`）把 classpath 拉回“全家桶”形态，修导入和跑通后再去掉 classic、按技术补 starter。\[1]

旧名 starter 也有一批弃用替换，例如 `spring-boot-starter-web` → `spring-boot-starter-webmvc`，OAuth 相关 starter 名称也加了 `security-` 前缀，建议对照官方表一次性改完。\[1]

### 4、过一遍破坏性变更清单

Undertow 嵌入式支持已移除（未对齐 Servlet 6.1）；Jackson 默认走向 Jackson 3（包名/坐标从 `com.fasterxml.jackson` 迁到 `tools.jackson`，注解模块例外）；`@MockBean`/`@SpyBean` 改为 `@MockitoBean`/`@MockitoSpyBean`；`@SpringBootTest` 不再默认带上 MockMVC，需要时加 `@AutoConfigureMockMvc`。Mongo 等属性前缀也有调整（部分 `spring.data.mongodb.*` 改为 `spring.mongodb.*`）。\[1]

**怎么确认成功：** 应用能启动，核心接口与集成测试通过；若仍依赖 Jackson 2，可临时引入 `spring-boot-jackson2`，但应排期迁到 Jackson 3。

## 注意事项

- 已移除能力还包括：Pulsar Reactive 自动配置、Unix 可执行 uber jar 启动脚本、Spock 集成、Spring Session Hazelcast/MongoDB 的 Boot 侧直接支持等。
- 同步阅读 Spring Framework 7、Security 7、Data 2025.1 等同批发行说明，避免只升 Boot、下游仍卡在旧大版本。

> 说明：步骤据 Spring Boot 官方 Wiki《Spring Boot 4.0 Migration Guide》整理，Wiki 页面最近编辑时间为 2026 年 6 月 28 日；具体以你锁定的 4.0.x 维护版发行说明为准。

## 来源

> \[1] [Spring Boot 4.0 Migration Guide](https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-4.0-Migration-Guide)，Spring Boot Wiki，页面最近编辑 2026年6月28日。

#SpringBoot #SpringBoot4 #Java #迁移指南 #JakartaEE

排序方式 :

### **成为第一条评论！**

Nobody's responded to this post yet. Add your thoughts and get the conversation going.

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://www.angryecho.com/c/java/p/P2TBBo2TMmn8QYsF5AOlH#post","@type":"DiscussionForumPosting","commentCount":0,"dateModified":"2026-10-27T02:57:49.223Z","datePublished":"2025-11-20T04:00:00.000Z","description":"要把现有应用迁到 Spring Boot 4.0，官方迁移指南给出的顺序很明确：先升到最新的 3.5.x，再动大版本。这样可以先把依赖和弃用 API 在旧线上清干净，再面对 4.0 的模块拆分和配置改名。[","headline":"升到 Spring Boot 4.0：先稳住 3.5.x，再拆模块与配置","isPartOf":"https://www.angryecho.com/c/java","mainEntityOfPage":"https://www.angryecho.com/c/java/p/P2TBBo2TMmn8QYsF5AOlH","text":"要把现有应用迁到 Spring Boot 4.0，官方迁移指南给出的顺序很明确：先升到最新的 3.5.x，再动大版本。这样可以先把依赖和弃用 API 在旧线上清干净，再面对 4.0 的模块拆分和配置改名。[1]\n\n准备工作\n\n\n\n\n\n运行时：Java 17 及以上（建议用当前 LTS）；Kotlin 需 2.2+；若用 GraalVM native-image，需 v25+。\n\n\n\nSpring Boot 4 基于 Jakarta EE 11，Servlet 基线为 6.1；自行管依赖时须对齐 Spring Framework 7.x。\n\n\n\n对照官方 3.5.x 与 4.0.x 的依赖管理差异；Spring Cloud 等未由 Boot 托管的组件，先查清兼容版本再升。\n\n\n\n列一张「本项目用到的技术清单」：WebMVC/WebFlux、JPA、Flyway、Security、Kafka、Batch 等，后面要按清单换 starter。\n\n操作步骤\n\n1、升到最新 3.5.x 并清掉弃用调用\n\n先把工程升到最新可用的 3.5.x 维护版，编译跑通测试。逐个检查对已弃用类/方法的调用——这些在 4.0 会被删除。做完这一步，再改 BOM 到 4.0 最新维护版。[1]\n\n怎么确认成功： 工程在 3.5.x 上构建、测试全绿，且业务代码触发的 deprecation 警告已清理或有替换方案。\n\n2、用 properties migrator 兜住配置改名\n\n4.0 里不少 application.properties / application.yml 键被重命名或删除。可临时加入：\n\n\u003Cdependency>\n  \u003CgroupId>org.springframework.boot\u003C/groupId>\n  \u003CartifactId>spring-boot-properties-migrator\u003C/artifactId>\n  \u003Cscope>runtime\u003C/scope>\n\u003C/dependency>\n\nGradle 则用 runtimeOnly(\"org.springframework.boot:spring-boot-properties-migrator\")。启动时它会打印诊断，并在运行期临时迁移旧键。迁移完成后务必删掉该依赖。[1]\n\n怎么确认成功： 启动日志里旧键告警消失，配置已改成新键名，去掉 migrator 后行为不变。\n\n3、按技术补齐 starter，必要时先用 classic 过渡\n\n4.0 改成更细的模块：例如以前只引 Flyway/Liquibase 第三方包就能自动配置，现在要换成 spring-boot-starter-flyway / spring-boot-starter-liquibase。测试侧同理，优先用 spring-boot-starter-\u003Ctech>-test。若一时理不清依赖，可先用 spring-boot-starter-classic（及 spring-boot-starter-test-classic）把 classpath 拉回“全家桶”形态，修导入和跑通后再去掉 classic、按技术补 starter。[1]\n\n旧名 starter 也有一批弃用替换，例如 spring-boot-starter-web → spring-boot-starter-webmvc，OAuth 相关 starter 名称也加了 security- 前缀，建议对照官方表一次性改完。[1]\n\n4、过一遍破坏性变更清单\n\nUndertow 嵌入式支持已移除（未对齐 Servlet 6.1）；Jackson 默认走向 Jackson 3（包名/坐标从 com.fasterxml.jackson 迁到 tools.jackson，注解模块例外）；@MockBean/@SpyBean 改为 @MockitoBean/@MockitoSpyBean；@SpringBootTest 不再默认带上 MockMVC，需要时加 @AutoConfigureMockMvc。Mongo 等属性前缀也有调整（部分 spring.data.mongodb.* 改为 spring.mongodb.*）。[1]\n\n怎么确认成功： 应用能启动，核心接口与集成测试通过；若仍依赖 Jackson 2，可临时引入 spring-boot-jackson2，但应排期迁到 Jackson 3。\n\n注意事项\n\n\n\n\n\n已移除能力还包括：Pulsar Reactive 自动配置、Unix 可执行 uber jar 启动脚本、Spock 集成、Spring Session Hazelcast/MongoDB 的 Boot 侧直接支持等。\n\n\n\n同步阅读 Spring Framework 7、Security 7、Data 2025.1 等同批发行说明，避免只升 Boot、下游仍卡在旧大版本。\n\n\n\n说明：步骤据 Spring Boot 官方 Wiki《Spring Boot 4.0 Migration Guide》整理，Wiki 页面最近编辑时间为 2026 年 6 月 28 日；具体以你锁定的 4.0.x 维护版发行说明为准。\n\n来源\n\n\n\n[1] Spring Boot 4.0 Migration Guide，Spring Boot Wiki，页面最近编辑 2026年6月28日。\n\n#SpringBoot #SpringBoot4 #Java #迁移指南 #JakartaEE","url":"https://www.angryecho.com/c/java/p/P2TBBo2TMmn8QYsF5AOlH","author":{"@type":"Person","name":"Paolo Noise","url":"https://www.angryecho.com/u/P7H10141140"},"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":0},{"@type":"InteractionCounter","interactionType":"https://schema.org/DislikeAction","userInteractionCount":0},{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":0},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":0}]}]}
```

## Sitemap

See the full [sitemap](https://www.angryecho.com/sitemap.md) for all pages.
