用途
该技能用于对 Spring Boot 4 代码进行结构化审查,支持 Java 17 及以上版本(17 为最低要求,21 LTS 和 25 在 Boot 4 新项目中常见)。审查应基于实际代码库,仅在适用的重点领域使用参考文件。
关键规则
- 没有代码上下文绝不审查。若未提供,应要求文件、差异或相关模块。
- 所有发现必须引用文件路径和行号。
- 以 Spring Boot 4 为目标。读取项目的 pom.xml / build.gradle 确定实际 Java 版本(Boot 4 支持 17、21、25)。不要将 Java 17 或 21 标记为“过旧”——它们是有效的 Boot 4 基线。
- 在推荐虚拟线程、响应式重写或架构变更前,先分析工作负载。
- 新 Boot 4 代码优先使用 JSpecify 作为空安全基线,但在标记每个遗留注解前,先确认代码库是否仍处于过渡期。
- 当结论依赖框架行为时,优先采用官方 Spring 和 Java 指南。
工作流程
步骤 1:确认范围
收集准确审查所需的最小上下文:
- 范围:单文件、模块、PR 或完整代码库。
- 目标版本:相关时从构建文件确认 Java 和 Spring Boot 版本。
- 重点领域:迁移、架构、数据访问、安全、性能、空安全或全部。
- 测试上下文:用户期望仅审查发现,还是也包含修复建议和测试影响。
步骤 2:仅加载与审查匹配的参考文件
按需加载:
| 重点 | 读取 |
|---|---|
| Spring Boot 4 迁移模式和框架差异 | references/spring-boot-4-patterns.md |
| Java 25 语言和并发采用 | references/java-25-features.md |
| 安全审查 | references/security-checklist.md |
| 性能审查 | references/performance-patterns.md |
| 架构边界和打包 | references/architecture-patterns.md |
| 领域模型形态 | references/domain-modeling.md |
| 值对象密集型设计 | references/value-objects-patterns.md |
| 空安全检查 | references/jspecify-null-safety.md |
需要时升级到其他技能:
- 深度仓库、查询和关系工作使用 spring-data-jpa。
- 分阶段升级规划或升级执行使用 springboot-migration。
步骤 3:运行审查轮次
仅运行与请求匹配的轮次。完整审查按此顺序:
Pass A:构建与配置
- 验证 pom.xml 或 build.gradle 中的 Java 和 Spring Boot 版本。
- 检查 starter 名称和迁移遗留物。
- 扫描 Jackson 3 迁移问题、过时的测试注解和版本漂移。
Pass B:API 正确性
- 检查控制器和服务边界。
- 检查验证和错误处理。
- 检查公共 API 和方法重写中的可空性。
Pass C:架构与打包
- 识别所用架构风格。
- 验证包结构与该风格一致。
- 标记边界泄漏,如控制器到仓库的捷径或领域代码中的基础设施类型。
Pass D:数据访问
- 检查仓库位置和聚合边界。
- 检查 N+1 查询、缺失分页、投影不匹配和事务误用。
Pass E:安全
- 检查认证和授权。
- 检查输入验证和不安全查询模式。
- 检查密钥处理和敏感日志。
Pass F:性能与弹性
- 检查缓存策略、无界读取、异步使用和远程调用行为。
- 仅当代码和工作负载证明合理时评估虚拟线程使用。
- 检查超时、重试和连接池假设。
发现的快速触发点
将这些作为审查提示,而非代码证据的替代。
Spring Boot 4 与迁移
- 旧 starter 名称
- 旧 Mockito 测试注解
- Boot 4 代码库中的 Jackson 2 假设
- 使用 TestRestTemplate 而非 RestTestClient
- 手动 HttpServiceProxyFactory 样板而非 @ImportHttpServices
- 自定义 API 版本控制而非原生 spring.mvc.apiversion.*
- @ConcurrencyLimit 或原生 @Retryable 缺少 @EnableResilientMethods
空安全
- 项目使用 JSpecify 时缺少 package-info.java
- 已迁移到 JSpecify 的代码中残留 org.springframework.lang 注解
- 重写方法上缺少复制的可空性注解
架构
- 控制器直接调用仓库
- API 中暴露 JPA 实体
- modulith 边界泄漏
- 业务逻辑集中在控制器
性能
- 循环中遍历实体
- 缺失分页
- 读密集路径上忽略投影机会
- 无工作负载证据的虚拟线程建议
安全
- 特权操作缺少授权
- SQL 或 NoSQL 注入风险
- 源码或日志中的密钥
- 不安全的错误暴露
报告格式
按严重程度排序发现,使用此模板:
## Critical
- **[Category]**: Issue summary
- **File**: `path/to/File.java:123`
- **Impact**: What can fail, leak, or regress
- **Fix**: Specific change to make
## High
- ...
## Medium
- ...
## Low
- ...
若无发现,明确说明,并指出剩余盲点,如未审查模块、缺失测试或不可用的运行时上下文。
常见审查模式
快速 PR 审查
- 阅读变更文件。
- 加载 references/spring-boot-4-patterns.md 和 references/java-25-features.md。
- 若差异涉及安全或性能领域,添加 references/security-checklist.md 或 references/performance-patterns.md。
- 仅报告带文件和行号引用的具体发现。
安全审查
- 阅读 references/security-checklist.md。
- 聚焦控制器、服务入口点、安全配置和持久化边界。
- 报告可利用性和受影响入口点,而不仅是违反的规则。
架构审查
- 阅读 references/architecture-patterns.md。
- 若代码暗示富领域方法,添加 references/domain-modeling.md 或 references/value-objects-patterns.md。
- 报告与当前架构风格相关的边界不匹配和耦合问题。
迁移审查
- 阅读 references/spring-boot-4-patterns.md 和 references/java-25-features.md。
- 聚焦迁移遗留物、过时 API 和部分采用问题。
- 若用户想要分阶段升级计划而非审查,使用 springboot-migration。
何时不使用此技能
- Kotlin 优先的代码库
- 非 Spring Java 框架,如 Micronaut 或 Quarkus
- 无代码上下文的泛泛审查指导
- 纯前端改动