快速掌握后端工程的关键不是先读完代码,而是建立一张“请求如何进来、数据如何流动、能力如何被约束”的地图。

先抓主线

  1. 看根目录的 READMEpom.xml / build.gradle、部署配置。
  2. 确认技术栈:Spring Boot、数据库、缓存、MQ、RPC、配置中心、鉴权方式。
  3. 运行工程或启动一个服务,确认启动入口、环境变量和依赖中间件。
  4. 任选一个核心接口,从 URL 跟到数据库,跑通完整调用链。
请求 → Filter / Interceptor → Controller
     → Service → DAO / RPC / MQ
     → DB / Redis → 响应

按重要性阅读代码

  • 入口层Controller@RequestMappingFilterInterceptor、全局异常处理。
  • 业务层:核心 Service、事务 @Transactional、状态机、领域对象。
  • 数据层Mapper / Repository、实体、SQL、表结构和索引。
  • 基础设施:Redis、MQ、RPC Client、定时任务、文件存储、第三方接口。
  • 横切能力:鉴权、权限、租户、审计日志、幂等、限流、灰度、监控。

优先回答的 10 个问题

  1. 工程有哪些模块?每个模块负责什么?
  2. 服务从哪里启动?有哪些 profile 和配置来源?
  3. 最核心的 3~5 个业务接口是什么?
  4. 一次请求经过哪些过滤器、拦截器和 AOP?
  5. 用户身份从哪里来,鉴权在哪里做?
  6. 核心数据表有哪些,主键、状态字段、关联关系是什么?
  7. 哪些操作要事务,事务边界在哪?
  8. Redis / MQ / RPC 在什么场景使用,失败如何处理?
  9. 异常如何返回,日志、链路追踪和告警怎么做?
  10. 如何测试、构建、发布和回滚?

高效搜索方式

  • 找 API:rg -n '@(Get|Post|Put|Delete|Request)Mapping' --glob '*.java'
  • 找核心业务词:rg -n -i '订单|发布|用户|permission' --glob '*.java'
  • 找调用:rg -n '\b方法名\s*\(' --glob '*.java'
  • 找表或 SQL:rg -n '表名|SELECT|INSERT|UPDATE'
  • 找配置:rg --files | rg 'application.*\.(yml|yaml|properties)$'
  • 找异步逻辑:rg -n '@Async|@Scheduled|KafkaListener|RabbitListener|Consumer'

建议节奏

  • 第 1 小时:目录、模块、启动方式、配置、依赖。
  • 第 1 天:跑通一个核心请求链路;理解表、缓存、权限。
  • 第 2 天:理解异常、事务、异步任务、MQ/RPC 和可观测性。
  • 第 3 天:挑一个小需求或 bug,完成一次“定位 → 修改 → 测试 → 发布链路”闭环。

输出自己的工程地图
建议维护一页笔记,内容只要包含:

模块职责
核心接口与调用链
核心表与状态流转
认证 / 权限模型
外部依赖(DB、Redis、MQ、RPC)
启动、测试、发布命令
风险点与未理解问题

对当前这类多模块 Spring Boot 工程,先从 Web/API 模块开始,沿 Controller → Service → Mapper/RPC 向下追;不要一开始钻进 commonadapter 等底层公共模块。这样最快形成可工作的全局认知。