Spring 学习路线全文总结
概述
从 2026 年 8 月 1 日至 12 月 25 日,历时 21 周,完成了 Spring 生态全景式深度学习。本文作为整个系列的收尾,从知识体系、学习路径、面试重点、论文推荐、后续方向五个维度进行全景梳理。
一、Spring 知识体系全景图
┌─────────────────────────────────────────────────────────────────┐
│ Spring 生态全景 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 核心 Framework │ │
│ │ IoC 容器 · DI · AOP · 事务 · SpEL · 事件 · 验证 │ │
│ │ 资源 · i18n · 类型转换 · TaskExecutor · TestContext │ │
│ └──────────────────────┬───────────────────────────────┘ │
│ │ │
│ ┌───────────────┼───────────────┐ │
│ ▼ ▼ ▼ │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ Spring Boot│ │ Spring MVC │ │ Spring │ │
│ │ │ │ │ │ WebFlux │ │
│ │ 自动配置 │ │ Dispatcher │ │ Reactive │ │
│ │ Starter │ │ Servlet │ │ Streams │ │
│ │ Actuator │ │ 拦截器 │ │ R2DBC │ │
│ │ 外部配置 │ │ 异常处理 │ │ RSocket │ │
│ │ GraalVM │ │ SSE/WS │ │ │ │
│ └────────────┘ └────────────┘ └────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ Spring │ │ Spring │ │ Spring │ │
│ │ Security │ │ Cloud │ │ Data JPA │ │
│ │ │ │ │ │ │ │
│ │ 认证/授权 │ │ Gateway │ │ Repository │ │
│ │ OAuth2 │ │ Nacos │ │ 实体映射 │ │
│ │ RBAC/ABAC │ │ Sentinel │ │ 查询DSL │ │
│ │ JWT/CSRF │ │ Feign │ │ 锁/缓存 │ │
│ └────────────┘ └────────────┘ └────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 22 种中间件生态整合 │ │
│ │ MySQL · Redis · MongoDB · ES · RocketMQ · Kafka │ │
│ │ RabbitMQ · Nacos · Sentinel · Gateway · Dubbo │ │
│ │ ShardingSphere · Canal · SkyWalking · Prometheus │ │
│ │ Grafana · XXL-Job · Elastic-Job · Docker · K8s │ │
│ │ Istio · Helm │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 未来进阶方向 │ │
│ │ Spring AI · Spring Modulith · Virtual Threads · CRaC │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘1.1 核心领域划分
| 领域 | 覆盖范围 | 核心能力 |
|---|---|---|
| IoC/DI | BeanDefinition、容器体系、依赖注入、循环依赖 | 控制反转、解耦、可测试性 |
| AOP | 代理原理、@AspectJ、事务、缓存、异步 | 横切关注点分离 |
| 事务 | PlatformTransactionManager、传播行为、隔离级别 | 数据一致性保障 |
| MVC | DispatcherServlet、参数绑定、视图解析 | RESTful Web 开发 |
| Security | 认证链、授权模型、OAuth2、JWT | 应用安全防护 |
| Boot | 自动配置、Starter、Actuator、外部化配置 | 快速开发、生产就绪 |
| Cloud | 网关、注册发现、配置中心、限流熔断 | 微服务治理 |
| Data | JPA/MyBatis、缓存、多数据源 | 数据访问抽象 |
二、21 周学习路径回顾
第一阶段:Spring Framework 核心(第 1-5 周,约 30 篇)
| 周次 | 主题 | 核心内容 |
|---|---|---|
| 第 1 周 | IoC 容器体系 | 容器概念、BeanDefinition、依赖注入三种方式、循环依赖三级缓存 |
| 第 2 周 | Bean 生命周期与作用域 | 完整生命周期 7 阶段、6 种作用域、@Configuration/@Bean 深度 |
| 第 3 周 | 条件装配与扩展接口 | @Conditional/@Profile、FactoryBean、Aware 接口族、SmartLifecycle |
| 第 4 周 | AOP 核心与事务 | JDK/CGLIB 代理、@AspectJ 9 种 Pointcut、事务传播/隔离/回滚 |
| 第 5 周 | 功能模块深度 | SpEL、事件机制、类型转换、Environment、泛型处理、资源抽象 |
产出文档:28 篇 中间件:无(纯 Framework) 实战:SMS SDK 封装、金融交易日志、电商对账
第二阶段:Spring Boot 与数据访问(第 6-9 周,约 25 篇)
| 周次 | 主题 | 核心内容 |
|---|---|---|
| 第 6 周 | Boot 自动配置 | @SpringBootApplication 源码、条件评估、外部化配置 17 来源 |
| 第 7 周 | Boot 生产特性 | Actuator 22 端点、Micrometer/Prometheus、Fat Jar、GraalVM |
| 第 8 周 | Boot 实战 + JPA | 自定义 Starter、Caffeine 缓存、Redisson 分布式工具 |
| 第 9 周 | MyBatis + 数据中间件 | MyBatis/MyBatis-Plus 原理、ShardingSphere、Canal |
产出文档:约 25 篇 中间件:ShardingSphere、Canal、Caffeine、Redisson 实战:秒杀系统、商品详情页缓存、多租户 SaaS
第三阶段:Spring MVC 与 WebFlux(第 10-12 周,约 20 篇)
| 周次 | 主题 | 核心内容 |
|---|---|---|
| 第 10 周 | MVC 核心源码 | DispatcherServlet.doDispatch()、九大组件、参数绑定、返回值处理 |
| 第 11 周 | MVC 高级特性 | 拦截器/Filter、全局异常处理、文件上传、REST API 最佳实践 |
| 第 12 周 | WebFlux/SSE/WS | WebFlux 架构、R2DBC、RSocket、SSE 推送、WebSocket 深度 |
产出文档:约 20 篇 中间件:无(纯 Web 层) 实战:短链服务 50 万 QPS、弹幕/评论系统、在线客服
第四阶段:Spring Security(第 12-14 周,约 21 篇)
| 周次 | 主题 | 核心内容 |
|---|---|---|
| 第 12 周 | 认证机制 | SecurityFilterChain、认证流程、PasswordEncoder、Session 管理 |
| 第 13 周 | 授权模型 | RBAC/ABAC、AccessDecisionManager、JWT 深入、OAuth2 客户端 |
| 第 14 周 | 安全实战 | Keycloak、数据脱敏、API 安全综合、响应式安全、用户中心实战 |
产出文档:21 篇 中间件:Keycloak、Spring Authorization Server 实战:企业用户中台、开放平台 API 网关、微服务安全架构
第五阶段:Spring Cloud(第 15-17 周,约 28 篇)
| 周次 | 主题 | 核心内容 |
|---|---|---|
| 第 15 周 | 服务发现与配置 | Nacos 配置中心/服务发现、LoadBalancer、OpenFeign |
| 第 16 周 | 网关与限流 | Gateway 过滤器/源码、Sentinel 实战/源码 |
| 第 17 周 | 治理与可观测 | 分布式事务(Seata)、分布式锁(Redisson)、接口幂等性、SkyWalking、告警体系 |
产出文档:28 篇 中间件:Nacos、Gateway、Sentinel、Seata、SkyWalking、Prometheus/Grafana 实战:电商大促全链路保障、金丝雀发布、灰度路由
第六阶段:分布式核心与中间件(第 18-20 周,约 21 篇)
| 周次 | 主题 | 核心内容 |
|---|---|---|
| 第 18 周 | 消息中间件 | RocketMQ 事务消息/批量/延迟、Kafka 生产者/消费者/Streams、RabbitMQ 交换机/死信 |
| 第 19 周 | 数据与 RPC | 分库分表深度、Canal+Kafka 数据管道、Dubbo 服务治理 |
| 第 20 周 | 容器化与部署 | Docker Compose、K8s 核心/部署/高级特性、Helm、CI/CD、全链路压测 |
产出文档:21 篇 中间件:RocketMQ、Kafka、RabbitMQ、Dubbo、Docker、K8s、Istio、Helm、Jenkins 实战:跨境电商订单处理、消息对账、K8s 集群部署
第七阶段:源码决战与实战整合(第 21 周,约 7 篇)
| 日期 | 主题 | 核心内容 |
|---|---|---|
| 12/19 | IoC 源码精读 | refresh() 12 步、getBean/doCreateBean、三级缓存 |
| 12/20 | AOP + 事务源码 | JdkDynamicAopProxy、CglibAopProxy、事务回调 |
| 12/21 | Boot 自动配置源码 | AutoConfigurationImportSelector、条件评估全流程 |
| 12/22 | MVC + Security 源码串讲 | 请求从 FilterChain → DispatcherServlet → Controller 全路径 |
| 12/23 | Cloud 核心源码串讲 | Gateway→Nacos→Sentinel→Feign 全链路 |
| 12/24 | 跨境电商全栈设计 | 8 大模块 + 22 种中间件全景落地 |
| 12/25 | 全文总结 | 本文 |
三、面试重点
3.1 IoC 容器
| 面试题 | 核心要点 | 参考文章 |
|---|---|---|
refresh() 12 步流程 | 各步骤顺序、BeanFactoryPostProcessor vs BeanPostProcessor 区别 | IoC 源码精读 |
| 三级缓存如何解决循环依赖 | singletonObjects、earlySingletonObjects、singletonFactories 三者的作用和流转 | 循环依赖三级缓存 |
@Autowired vs @Resource vs @Inject | 类型注入 vs 名称注入、来源不同、required 属性差异 | 依赖注入三种方式 |
| Bean 生命周期完整流程 | 实例化→属性赋值→Aware→BeanPostProcessor→init→destroy 7 个阶段 | Bean 生命周期全解析 |
@Configuration Full vs Lite 模式 | CGLIB 代理、@Bean 方法互调时的单例保证 | @Configuration 与 @Bean 深度 |
3.2 AOP 与事务
| 面试题 | 核心要点 | 参考文章 |
|---|---|---|
| JDK 动态代理 vs CGLIB 区别 | 接口 vs 类、性能、Spring Boot 2.x+ 默认 CGLIB | AOP 核心原理 |
| 事务传播行为 7 种 | REQUIRED/REQUIRES_NEW/NESTED/SUPPORTS/MANDATORY/NOT_SUPPORTED/NEVER | 事务核心原理 |
| 事务失效的 8 种场景 | 自调用、private 方法、异常被 catch、传播行为配置错误等 | 事务失效场景大全 |
| AOP 自调用失效如何解决 | AopContext.setCurrentProxy()、@Lazy 自注入、注入自身 | AOP 注意事项 |
| @TransactionalEventListener 原理 | 事务阶段绑定、在事务提交/回滚后处理事件 | AOP + 事务源码 |
3.3 Spring Boot
| 面试题 | 核心要点 | 参考文章 |
|---|---|---|
| 自动配置原理 | @EnableAutoConfiguration → AutoConfigurationImportSelector → spring.factories | @SpringBootApplication 源码 |
| 条件评估机制 | OnClassCondition/OnBeanCondition/OnPropertyCondition 匹配逻辑 | 条件评估源码 |
| 外部化配置 17 种来源优先级 | 命令行 > JNDI > 系统属性 > application.yml > @PropertySource | 外部化配置优先级 |
| 自定义 Starter 步骤 | 自动配置类 + spring.factories + 条件注解 + 配置属性类 | 自定义 Starter 实战 |
| Spring Boot 3.x 新特性 | GraalVM Native Image、AOT 编译、Virtual Threads | GraalVM Native Image |
3.4 Spring MVC
| 面试题 | 核心要点 | 参考文章 |
|---|---|---|
| DispatcherServlet 工作流程 | doDispatch():getHandler → getHandlerAdapter → handle → processDispatchResult | DispatcherServlet 源码 |
| HandlerMapping 体系 | RequestMappingHandlerMapping 如何建立 URL→Method 映射 | DispatcherServlet 源码 |
| 参数绑定流程 | HandlerMethodArgumentResolver 解析链:@PathVariable → @RequestParam → @RequestBody | 参数绑定源码 |
| @ExceptionHandler 优先级 | 精确匹配 > 类级 > @ControllerAdvice 全局 > 父类 | 全局异常处理 |
| Interceptor vs Filter 区别 | Filter 基于 Servlet、Interceptor 基于 Spring、执行顺序、作用范围 | 拦截器与 Filter |
3.5 Spring Security
| 面试题 | 核心要点 | 参考文章 |
|---|---|---|
| SecurityFilterChain 架构 | FilterChainProxy → SecurityFilterChain 链 → 各 Filter 执行 | Security 架构 |
| 认证流程完整路径 | UsernamePasswordAuthenticationFilter → AuthenticationManager → ProviderManager → AuthenticationProvider | 认证流程深度 |
| JWT 无状态认证优缺点 | 无需 Session、跨域友好、Token 撤销困难、大小限制 | JWT 深入 |
| RBAC vs ABAC 选择 | RBAC 适合固定角色、ABAC 适合动态属性、可组合使用 | RBAC 权限模型 |
| CORS 跨域配置 | CorsFilter/CorsConfiguration、@CrossOrigin、allowedOrigins vs allowedOriginPatterns | CSRF + CSP + 安全头 |
3.6 Spring Cloud
| 面试题 | 核心要点 | 参考文章 |
|---|---|---|
| Gateway 路由匹配 | RoutePredicateHandlerMapping → Predicate 链 → 路由权重 → FilteringWebHandler | Gateway 源码精读 |
| Sentinel 限流原理 | ProcessorSlotChain → FlowSlot → StatisticSlot → LeapArray 滑动窗口 | Sentinel 源码精读 |
| Nacos 健康检查 | 临时实例心跳 5s、永久实例主动检测、健康保护阈值 | Nacos 服务发现 |
| Feign 动态代理 | @FeignClient → FeignInvocationHandler → ReflectiveFeign → MethodHandler | OpenFeign 源码 |
| Seata AT 模式两阶段提交 | 全局事务、分支事务、undo_log、TC/TM/RM 三组件 | 分布式事务 |
3.7 微服务设计
| 面试题 | 核心要点 | 参考文章 |
|---|---|---|
| 微服务拆分原则 | 业务边界(DDD 限界上下文)、康威定律、数据独立性 | 跨境电商项目设计 |
| 分布式事务方案选型 | Seata AT/TCC/Saga/XA、最大努力通知、事务消息 | 跨境电商项目设计 |
| 分库分表策略 | 分片键选择、范围分片 vs 哈希分片、读写分离、弹性伸缩 | ShardingSphere 实战 |
| 缓存策略 | Cache-Aside、Read-Through、Write-Through、缓存穿透/击穿/雪崩 | Caffeine 深度 |
| 全链路压测方案 | 压测标记透传、数据隔离、JMeter/Gatling、瓶颈定位 | 全链路压测 |
四、推荐阅读与论文
4.1 Spring Framework 源码必读
| 类/接口 | 重要性 | 说明 |
|---|---|---|
AbstractApplicationContext.refresh() | ⭐⭐⭐⭐⭐ | IoC 容器启动核心入口 |
AbstractAutowireCapableBeanFactory.doCreateBean() | ⭐⭐⭐⭐⭐ | Bean 实例化/属性赋值/初始化完整流程 |
DefaultSingletonBeanRegistry.getSingleton() | ⭐⭐⭐⭐⭐ | 三级缓存循环依赖解决 |
JdkDynamicAopProxy.invoke() | ⭐⭐⭐⭐⭐ | AOP 代理链调用 |
TransactionAspectSupport.invokeWithinTransaction() | ⭐⭐⭐⭐⭐ | 事务增强核心 |
DispatcherServlet.doDispatch() | ⭐⭐⭐⭐⭐ | MVC 请求处理全流程 |
FilterChainProxy.doFilter() | ⭐⭐⭐⭐⭐ | Security 安全过滤链入口 |
AutoConfigurationImportSelector.selectImports() | ⭐⭐⭐⭐ | Boot 自动配置入口 |
RoutePredicateHandlerMapping.getHandlerInternal() | ⭐⭐⭐⭐ | Gateway 路由匹配 |
4.2 学术论文推荐
| 论文 | 主题 | 推荐理由 |
|---|---|---|
| Johnson R. "Expert One-on-One J2EE Design and Development" (2002) | IoC 起源 | Spring 框架的设计思想来源 |
| Johnson R. "J2EE Development without EJB" (2004) | 轻量级容器 | 奠定了 Spring 取代 EJB 的理论基础 |
| Gamma E. "Design Patterns: Elements of Reusable Object-Oriented Software" (1994) | 设计模式 | Spring 大量使用:工厂模式、代理模式、观察者模式、模板方法模式 |
| Evans E. "Domain-Driven Design: Tackling Complexity in the Heart of Software" (2003) | DDD | 微服务拆分的基础方法论 |
| Newman S. "Building Microservices: Designing Fine-Grained Systems" (2nd Ed, 2021) | 微服务 | 微服务架构设计权威指南 |
| Burns B. "Designing Distributed Systems" (2018) | 分布式系统 | Sidecar、Leader Election、分布式协调模式 |
| Kleppmann M. "Designing Data-Intensive Applications" (2017) | 数据密集型系统 | 分布式数据存储、一致性、复制、分区 |
| Hunt A., Thomas D. "The Pragmatic Programmer" (20th Anniversary Ed, 2019) | 软件工程 | 软件开发方法论、技术债务管理 |
4.3 权威参考文档
| 文档 | 链接 | 用途 |
|---|---|---|
| Spring Framework Reference | docs.spring.io | 官方权威指南 |
| Spring Boot Reference | docs.spring.io | Boot 配置与特性大全 |
| Spring Cloud Reference | docs.spring.io | 微服务组件手册 |
| Sentinel Wiki | github.com | 限流降级配置指南 |
| Nacos Docs | nacos.io | 注册中心/配置中心手册 |
五、后续进阶方向
5.1 Spring AI
Spring AI 是 Spring 生态在 AI 领域的最新布局,提供与 LLM 集成的抽象层。
// Spring AI 示例:ChatClient
@RestController
class AIController {
private final ChatClient chatClient;
@GetMapping("/ai/chat")
String chat(@RequestParam String message) {
return chatClient.prompt()
.user(message)
.call()
.content();
}
}学习要点:
- ChatClient / StreamingChatClient API
- Prompt 模板与输出解析(Structured Output)
- Embedding 模型集成(OpenAI、Ollama 本地模型)
- VectorStore(PGVector、Redis、Chroma)
- 与现有 Spring 应用无缝集成
5.2 Spring Modulith
Spring Modulith 为单体应用提供模块化架构,是微服务之外的另一种选择。
// Spring Modulith 模块定义
@ApplicationModule(
id = "inventory",
displayName = "库存管理",
allowedDependencies = {"product", "order"}
)
class InventoryModule {}学习要点:
- ApplicationModule 模块化验证
- 模块间事件驱动通信(Event Publication/Verification)
- 单体→微服务的渐进式演进路径
- 模块测试与集成测试
5.3 Virtual Threads (Project Loom)
JDK 21+ 的虚拟线程对 Spring 生态有深远影响。
@Configuration
class VirtualThreadConfig {
@Bean
TomcatProtocolHandlerCustomizer<?> protocolHandler() {
return handler -> handler.setExecutor(Executors.newVirtualThreadPerTaskExecutor());
}
}学习要点:
- 虚拟线程 vs 平台线程 vs WebFlux 的选型
- Spring MVC 在虚拟线程下的吞吐量表现
- 线程池迁移注意事项(ThreadLocal 兼容性)
- synchronized 与虚拟线程的兼容问题
5.4 CRaC (Coordinated Restore at Checkpoint)
CRaC 是 JDK 的冷启动加速技术,配合 Spring Boot 可实现毫秒级启动。
# CRaC with Spring Boot
spring.context.checkpoint: on-refresh学习要点:
- Checkpoint/Restore 机制
- CRaC vs GraalVM Native Image 对比
- 有状态 Bean 的 Checkpoint 兼容性
- Serverless 场景下的应用
5.5 其他方向
| 方向 | 推荐理由 | 入门路径 |
|---|---|---|
| Spring GraphQL | REST 之外的 API 方案 | 了解 GraphQL 规范 → Spring GraphQL Starter |
| Spring Pulsar | 新兴消息中间件 | Pulsar 架构 → Spring Pulsar Starter |
| Spring Session | 分布式 Session | SessionRepository → Redis Session |
| Spring Batch | 批处理框架 | Chunk 处理 → 任务编排 → 分布式批处理 |
| Spring Integration | 企业集成模式 | Message Channel → 消息路由 → 适配器模式 |
六、系列全景统计
6.1 基础数据
| 指标 | 数值 |
|---|---|
| 学习周期 | 2026-08-01 → 2026-12-25,共 21 周(147 天) |
| 总文档数 | ~160 篇 |
| 源码文档 | 9 篇(IoC、AOP、事务、Boot、MVC、Security、Cloud、Sentinel、Gateway) |
| 实战文档 | 40+ 篇 |
| 中间件覆盖 | 22 种 |
| 代码示例数 | 600+ 段 |
| 架构图/流程图 | 100+ 张 |
6.2 中间件清单
| 类别 | 中间件 | 数量 |
|---|---|---|
| 数据库 | MySQL、Redis、MongoDB、Elasticsearch | 4 |
| 消息队列 | RocketMQ、Kafka、RabbitMQ | 3 |
| 微服务 | Nacos、Gateway、Sentinel、Seata、Dubbo | 5 |
| 数据中间件 | ShardingSphere、Canal | 2 |
| 可观测性 | SkyWalking、Prometheus、Grafana | 3 |
| 容器/云 | Docker、K8s、Istio、Helm | 4 |
| CI/CD | Jenkins | 1 |
| 合计 | 22 种 | 22 |
6.3 各阶段比例
阶段分布(按文档数)
┌────────────────────┬────────────────────────────────────┐
│ Framework 核心 │ ████████████████████████ 18% │
│ Boot + 数据访问 │ ██████████████████ 15% │
│ MVC + WebFlux │ ███████████████ 13% │
│ Security │ ███████████████ 13% │
│ Cloud │ ██████████████████████ 18% │
│ 分布式 + 中间件 │ ██████████████████ 15% │
│ 源码决战 │ ██████ 5% │
│ 总结 │ ██ 1% │
└────────────────────┴────────────────────────────────────┘6.4 学习曲线
学习难度曲线
┌────────────────────────────────────────────────┐
│ ██ │ ← 第 1 周 IoC 概念入门
│ ██ ██ │ ← 第 3 周 条件装配
│ ██ ██ ██ │ ← 第 5 周 泛型处理
│ ██ ██ ██ ██ │ ← 第 7 周 Micrometer
│ ██ ██ ██ ██ ██ │ ← 第 9 周 ShardingSphere
│ ██ ██ ██ ██ ██ ██ │ ← 第 12 周 WebFlux
│ ██ ████ ██ ██ █████ │ ← 第 15 周 Nacos
│ ██ ██ ██ ██ ██ │ ← 第 18 周 RocketMQ
│ ██ ██ ██ ████████████ │ ← 第 21 周 源码决战
└────────────────────────────────────────────────┘
W1 W3 W5 W7 W9 W12 W15 W18 W21建议:对于初学者,按顺序学习 1-5 周建立基础后,可根据实际需求选择分支(Cloud 方向 / Security 方向 / 数据方向)深入学习。
七、致谢
本文档系列从 2026 年 8 月 1 日启动,历时 21 周,覆盖 Spring Framework、Spring Boot、Spring MVC、Spring WebFlux、Spring Security、Spring Cloud、Spring Data JPA 等核心生态,以及 22 种中间件深度整合。每篇文章力求知识点 + 源码分析 + 业务实战三位一体。
学习 Spring 生态没有终点。随着 Spring AI、Virtual Threads、CRaC 等新技术的不断演进,保持持续学习的习惯,拥抱变化,才是开发者最核心的竞争力。
Keep Learning, Keep Building.