# spring-boot3-migration **Repository Path**: learning_project/spring-boot3-migration ## Basic Information - **Project Name**: spring-boot3-migration - **Description**: Spring Boot 2 到 Spring Boot 3 迁移实战 —— 项目结构总结 - **Primary Language**: Java - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-18 - **Last Updated**: 2026-07-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Spring Boot 2 到 Spring Boot 3 迁移实战 —— 项目结构总结 ## 📁 完整项目结构 ``` spring-boot3-migration/ ├── pom.xml # 父POM,聚合6个子模块,统一版本管理 │ ├── stage1-jakarta-jdk/ # ❶ 阶段一:命名空间与JDK (第1-3期) │ ├── pom.xml │ └── src/main/ │ ├── resources/ │ │ ├── application.yml │ │ └── META-INF/spring/ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ └── java/com/example/stage1/ │ ├── Stage1Application.java │ ├── issue1/ # 第1期:Jakarta EE 全面迁移 │ │ ├── XssFilter.java # javax→jakarta Servlet Filter │ │ ├── AppContextListener.java # javax→jakarta ServletContextListener │ │ ├── OrderEntity.java # JPA 3.x + Validation 3.0 迁移 │ │ └── OrderItem.java # JSON 嵌套对象映射 │ ├── issue2/ # 第2期:JDK 17 & 21 必知必会 │ │ ├── RecordsDemo.java # Record 替代 Lombok DTO │ │ ├── TextBlocksDemo.java # Text Blocks 优雅编写 SQL/JSON │ │ ├── PatternMatchingDemo.java # Switch 模式匹配 + Sealed Class │ │ └── VirtualThreadDemo.java # 虚拟线程 + synchronized 陷阱 │ └── issue3/ # 第3期:自动配置全面重构 │ ├── IdempotentAutoConfiguration.java # @AutoConfiguration 注解 │ ├── IdempotentProperties.java # @ConfigurationProperties │ ├── IdempotentService.java # 幂等拦截服务 │ ├── VirtualThreadConfiguration.java # @ConditionalOnThreading │ └── OrderServiceConfiguration.java # 两阶段评估优化 │ ├── stage2-aot-native/ # ❷ 阶段二:编译与运行时 (第4-6期) │ ├── pom.xml │ └── src/main/ │ ├── resources/ │ │ └── application.yml │ └── java/com/example/stage2/ │ ├── Stage2Application.java │ ├── issue4/ # 第4期:AOT引擎与GraalVM原生镜像 │ │ └── NativeImageConfig.java # AOT 编译 + Reachability Metadata │ ├── issue5/ # 第5期:Native Image踩坑大全与CDS │ │ └── NativeImagePitfalls.java # 常见陷阱 + CDS 类数据共享 │ └── issue6/ # 第6期:虚拟线程深度集成 │ ├── VirtualThreadIntegrationService.java # Tomcat/Jetty 虚拟线程 │ └── VirtualThreadController.java # RestController 示例 │ ├── stage3-core-api/ # ❸ 阶段三:核心API变化 (第7-10期) │ ├── pom.xml │ └── src/main/ │ ├── resources/ │ │ └── application.yml │ └── java/com/example/stage3/ │ ├── Stage3Application.java │ ├── issue7/ # 第7期:RestTemplate退休,HTTP客户端三剑客 │ │ └── RestClientConfig.java # RestClient + HTTP Interface 声明式调用 │ ├── issue8/ # 第8期:Spring Security 6 配置革命 │ │ └── SecurityConfig.java # Lambda DSL + JWT + Argon2 密码编码 │ ├── issue9/ # 第9期:Micrometer Tracing 替代 Sleuth │ │ └── MicrometerTracingController.java # 分布式追踪 + OpenTelemetry │ └── issue10/ # 第10期:springdoc-openapi 与 ProblemDetails │ └── SpringdocController.java # OpenAPI 3.x + RFC 7807 错误响应 │ ├── stage4-middleware/ # ❹ 阶段四:中间件与集成 (第11-14期) │ ├── pom.xml │ └── src/main/ │ ├── resources/ │ │ └── application.yml │ └── java/com/example/stage4/ │ ├── Stage4Application.java │ ├── issue11/ # 第11期:ES 8.x 与 MongoDB 驱动升级 │ │ └── Elasticsearch8Migration.java # ES 8.x Fluent API + 新客户端 │ ├── issue12/ # 第12期:Docker Compose 与 Testcontainers │ │ └── TestcontainersDemo.java # Testcontainers 集成测试 + SSL 配置 │ ├── issue13/ # 第13期:优雅关机与K8s探针 │ │ └── GracefulShutdownController.java # 优雅停机 + Readiness/Liveness 探针 │ └── issue14/ # 第14期:WebFlux 3 与 RSocket │ └── WebFluxReactiveDemo.java # WebFlux + RSocket + R2DBC │ ├── stage5-microservice/ # ❺ 阶段五:微服务与分布式 (第15-17期) │ ├── pom.xml │ └── src/main/ │ ├── resources/ │ │ └── application.yml │ └── java/com/example/stage5/ │ ├── Stage5Application.java │ ├── issue15/ # 第15期:Spring Cloud 2023 全面升级 │ │ └── SpringCloud2023Migration.java # Ribbon→Spring Cloud LoadBalancer + Nacos │ ├── issue16/ # 第16期:Gateway 4 与 OpenFeign 4 │ │ └── GatewayAndFeignDemo.java # Gateway 4 + OpenFeign + Resilience4j │ └── issue17/ # 第17期:ShardingSphere 5 与 Flyway │ └── ShardingSphere5Demo.java # 分库分表 + Flyway 10 多数据源迁移 │ └── stage6-production/ # ❻ 阶段六:生产迁移实践 (第18-20期) ├── pom.xml └── src/main/ ├── resources/ │ └── application.yml └── java/com/example/stage6/ ├── Stage6Application.java ├── issue18/ # 第18期:Boot 2 升级 3 完整实战 │ └── Boot2ToBoot3ApiCheatSheet.java # 60+ API 对照 + 20 个踩坑实录 ├── issue19/ # 第19期:OpenRewrite 自动化迁移 │ └── OpenRewriteAndCICD.java # OpenRewrite 迁移脚本 + CI/CD 流水线 └── issue20/ # 第20期:生产级项目实战与技术展望 └── ProductionProject.java # 完整项目架构 + 性能调优 + 面试指南 ``` --- ## 📊 统计概览 | 指标 | 数量 | |:---|:---| | **父模块 (pom)** | 1 个 | | **子模块** | 6 个 | | **学习阶段** | 6 个 | | **覆盖期数** | 20 期(完整覆盖) | | **Java 源文件** | 37 个 | | **技术栈** | JDK 21 + Spring Boot 3.3.x | | **构建工具** | Maven 3.9+ | --- ## 🔧 六大学习阶段 | 阶段 | 模块 | 对应期数 | 核心主题 | |:---|:---|:---|:---| | ❶ | `stage1-jakarta-jdk` | 第 1-3 期 | Jakarta EE 命名空间迁移、JDK 17/21 新特性、自动配置重构 | | ❷ | `stage2-aot-native` | 第 4-6 期 | AOT 编译引擎、GraalVM 原生镜像、虚拟线程深度集成 | | ❸ | `stage3-core-api` | 第 7-10 期 | HTTP 客户端升级、Security 6 配置、链路追踪、OpenAPI | | ❹ | `stage4-middleware` | 第 11-14 期 | ES 8.x 升级、Testcontainers、优雅关机、WebFlux 响应式 | | ❺ | `stage5-microservice` | 第 15-17 期 | Spring Cloud 2023、Gateway/Feign 升级、分库分表 | | ❻ | `stage6-production` | 第 18-20 期 | 完整迁移实战、OpenRewrite 自动化、生产级架构 | --- ## 🗺️ 迁移知识地图 ``` Spring Boot 2 ──────────────────────────► Spring Boot 3 ───────────────────────────────────────────────────────── Jakarta EE 迁移 javax.* ─────────────────────────► jakarta.* JPA 2.x ────────────────────────► JPA 3.x (Jakarta) JDK 升级 JDK 8/11 ────────────────────────► JDK 17/21 POJO ────────────────────────► Record instanceof + cast ───────────────► Pattern Matching 传统线程 ────────────────────────► 虚拟线程 (Project Loom) 自动配置 spring.factories ────────────────► AutoConfiguration.imports @Configuration ──────────────────► @AutoConfiguration 编译与运行时 JIT Only ────────────────────────► AOT + GraalVM Native Image 类加载 ──────────────────────────► CDS (类数据共享) HTTP 客户端 RestTemplate ────────────────────► RestClient + HTTP Interface 安全框架 Security 5 WebSecurityConfigurer ─► Security 6 Lambda DSL 链路追踪 Spring Cloud Sleuth ─────────────► Micrometer Tracing API 文档 SpringFox (Swagger 2) ───────────► springdoc-openapi (OpenAPI 3) Elasticsearch ES 7.x High Level Client ────────► ES 8.x Fluent API 微服务体系 Ribbon ─────────────────────────► Spring Cloud LoadBalancer Hystrix ────────────────────────► Resilience4j Gateway 3 ──────────────────────► Gateway 4 Feign ──────────────────────────► OpenFeign 4 数据分层 ShardingSphere 4 ───────────────► ShardingSphere 5 自动化迁移 手动替换 ────────────────────────► OpenRewrite 自动迁移 ``` --- ## 🚀 快速开始 ### 环境要求 - **JDK**: 21+ - **Maven**: 3.9+ - **IDE**: IntelliJ IDEA 2023+ / Eclipse 2023+ ### 编译与运行 ```bash # 进入项目目录 cd spring-boot3-migration # 编译所有模块 mvn clean compile # 运行指定模块(例如 stage1) cd stage1-jakarta-jdk mvn spring-boot:run # 运行所有模块的单元测试 cd .. mvn clean test # 打包所有模块 mvn clean package -DskipTests ``` ### 在 IDE 中打开 1. 使用 IntelliJ IDEA:`File → Open` → 选择 `spring-boot3-migration/pom.xml` 2. IDEA 会自动识别为 Maven 多模块项目 3. 确保 Project SDK 设置为 JDK 21 --- ## 📝 代码特点 - **详细中文注释**:每个类和方法都有中文说明,标注了 Spring Boot 2(旧)→ Spring Boot 3(新)的变化对比 - **对比式编写**:关键迁移点采用 `@Deprecated` 标注旧写法,新写法直接呈现 - **可独立运行**:每个 stage 都是一个完整的 Spring Boot 应用,可独立启动和测试 - **真实场景**:代码基于生产环境常见的迁移场景编写,贴近实际业务需求 --- *生成时间:2026-07-18*