快速掌握后端工程的关键不是先读完代码,而是建立一张“请求如何进来、数据如何流动、能力如何被约束”的地图。
先抓主线
- 看根目录的
README、pom.xml/build.gradle、部署配置。 - 确认技术栈:Spring Boot、数据库、缓存、MQ、RPC、配置中心、鉴权方式。
- 运行工程或启动一个服务,确认启动入口、环境变量和依赖中间件。
- 任选一个核心接口,从 URL 跟到数据库,跑通完整调用链。
请求 → Filter / Interceptor → Controller
→ Service → DAO / RPC / MQ
→ DB / Redis → 响应
按重要性阅读代码
- 入口层:
Controller、@RequestMapping、Filter、Interceptor、全局异常处理。 - 业务层:核心
Service、事务@Transactional、状态机、领域对象。 - 数据层:
Mapper/ Repository、实体、SQL、表结构和索引。 - 基础设施:Redis、MQ、RPC Client、定时任务、文件存储、第三方接口。
- 横切能力:鉴权、权限、租户、审计日志、幂等、限流、灰度、监控。
优先回答的 10 个问题
- 工程有哪些模块?每个模块负责什么?
- 服务从哪里启动?有哪些 profile 和配置来源?
- 最核心的 3~5 个业务接口是什么?
- 一次请求经过哪些过滤器、拦截器和 AOP?
- 用户身份从哪里来,鉴权在哪里做?
- 核心数据表有哪些,主键、状态字段、关联关系是什么?
- 哪些操作要事务,事务边界在哪?
- Redis / MQ / RPC 在什么场景使用,失败如何处理?
- 异常如何返回,日志、链路追踪和告警怎么做?
- 如何测试、构建、发布和回滚?
高效搜索方式
- 找 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 向下追;不要一开始钻进 common、adapter 等底层公共模块。这样最快形成可工作的全局认知。