You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
digital-rmb-backend/docs/superpowers/plans/2026-08-03-java8-downgrade.md

2.9 KiB

Java 8 Compatibility Downgrade Implementation Plan

For agentic workers: REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (- [ ]) syntax for tracking.

Goal: 将后端降级为 Java 8 可编译、可运行的 Spring Boot 2.7 应用,同时保留现有认证、Flyway、Swagger 与 MyBatis-Plus 功能。

Architecture: 使用 Spring Boot 2.7.18 与 Spring Framework 5.3,恢复 javax.* Servlet/Validation API。所有 Java 17 record、文本块和 Spring 6 JdbcClient 改为 Java 8 POJO、字符串拼接和 NamedParameterJdbcTemplate;业务行为不改变。

Tech Stack: Java 8, Spring Boot 2.7.18, Spring Security 5.7, MyBatis-Plus 3.5.17, Springdoc 1.8.0, Flyway 8.x.

Global Constraints

  • Maven 必须以 JDK 8 以及 source/target 8 编译;不得保留 Java 9+ 或 Java 17 语言/API 依赖。
  • 保持本系统 JWT、本地用户名密码登录、SSO/CAS、Flyway V3 用户初始化和 Swagger 地址不变。
  • 不修改主平台工程,不输出任何密码或 Token。

Task 1: 切换依赖与编译目标

Files:

  • Modify: pom.xml

  • Modify: src/main/java/com/yau/digitalrmb/shared/infrastructure/persistence/ApplicationDataSourceConfig.java

  • Test: mvn -DskipTests compile -B

  • 将父版本切换为 2.7.18,java.version 切换为 1.8,设置 maven.compiler.source 与 maven.compiler.target 为 1.8。

  • 将 Web/Flyway/MyBatis-Plus/Springdoc 依赖替换为 Boot 2 对应 artifact:spring-boot-starter-web、flyway-core、mybatis-plus-boot-starter、springdoc-openapi-ui:1.8.0;移除 Boot 4 专用依赖。

  • 将 DataSourceProperties 导入改为 Boot 2 包路径。

  • 使用 JDK 8 完成编译并按报错清单完成后续兼容改造。

Task 2: 改造 Java 17、Spring 6 与 Jakarta 代码

Files:

  • Modify: 所有 src/main/java/** 中的 record、text block、JdbcClient、jakarta.* 和 Java 9+ API 调用

  • Modify: 对应 src/test/java/** 测试与 Boot 4 测试导入

  • 将所有 record 变为带构造器、getter、equals/hashCode 的 Java 8 类;请求 DTO 提供 JavaBean getter,保留 Bean Validation。

  • 用 NamedParameterJdbcTemplate 替换 JdbcClient;用普通字符串替换 text block 和 String.formatted。

  • 将 Jakarta 包改为 javax.*,将 Boot 4 AutoConfigureMockMvc 包改为 Boot 2 包。

  • 用 Collections、显式 switch、StringBuilder/自定义十六进制转换替换 Java 9+ API。

  • 使用 JDK 8 运行 mvn clean test -B,19 项测试通过。

Task 3: Java 8 运行时验证与文档

Files:

  • Modify: README.md

  • Modify: docs/DEVELOPMENT_GUIDE.md

  • 使用 JDK 8 执行 java -version、mvn test 和 Web 健康检查启动验证。

  • 更新 README 与开发规范的 Java/Spring Boot 版本要求。

  • 使用 JDK 8 运行 mvn package -DskipTests -B,确认可执行包生成成功。