Skip to content

Spring

这里主要整理 Spring 这条线。比起背一串组件名,更重要的是把几个核心模块之间的关系理顺:

  1. Spring Framework 负责什么基础能力
  2. IoCDIAOP 为什么是理解 Spring 的核心
  3. Spring MVCSpring BootSpring Cloud 分别解决哪一层问题
  4. 数据访问、校验、RPC、治理和可观测性落在生态的什么位置

很多人学 Spring 时卡住的点,不是没见过这些名词,而是:名词都认识,但模块关系总是理不顺。

这页主要做两件事:

  1. 建立生态地图
  2. 再给出阅读入口

1. Spring 生态到底是什么

Spring 不是一个单点框架,而是围绕 Java 企业开发逐步长出来的一整套基础框架、Web 框架、应用启动体系和微服务治理生态。

这里最核心的几层通常是:

  1. Spring Framework
  2. Spring MVC
  3. Spring Boot
  4. Spring Cloud

先把下面这几层分清就够用了:

  1. Spring Framework:解决对象管理、解耦、事务、整合等基础问题
  2. Spring MVC:解决 Web 请求如何进入应用、如何绑定参数、如何返回响应
  3. Spring Boot:解决 Spring 项目初始化复杂、配置零散、依赖选择繁琐的问题
  4. Spring Cloud:解决微服务下的注册发现、配置中心、网关、容错、限流等治理问题

它们之间不是替代关系,而是逐层叠加的关系,后面的能力通常建立在前面的基础之上。


2. 为什么 Spring 会成为 Java 后端主线

Spring 长期成为 Java 后端主线,不只是因为使用广,而是因为它把企业开发里反复出现的一组基础问题做成了统一模型:

  1. 对象如何组织,模块如何解耦
  2. 通用能力如何从业务代码里抽出去
  3. Web 请求如何标准化处理
  4. 项目启动和配置如何简化
  5. 微服务拆分后如何治理

3. 这条知识线最核心的几条主线

先看下面这些:

3.1 Spring Framework

对象管理、依赖组织、事务控制和各种基础整合能力。

3.2 IoC / DI / AOP

Spring 到底为什么能把对象创建、依赖关系和横切逻辑组织起来。

3.3 Spring MVC

一个 HTTP 请求进入应用后,如何找到 Controller、绑定参数、调用方法并返回结果。

3.4 Spring Boot

为什么现在搭一个 Spring 项目不再需要手写大量 XML 和繁琐配置。

3.5 Spring AI

Spring Boot 应用如何把聊天接口、流式输出、工具调用、MCP、RAG 和 Agent 这类 AI 能力逐步接进现有工程分层。

3.6 Spring Cloud

应用拆成多个服务后,注册发现、配置管理、网关、容错、限流这些治理能力怎么补齐。

3.7 数据访问与数据库整合

应用如何组织数据源、连接池、事务、SQL 执行和对象映射。

3.8 校验与边界保护

非法输入如何尽早拦在系统边界之外。

3.9 RPC 与服务调用

一个服务如何稳定、清晰、可治理地调用另一个服务。

3.10 可观测性与治理

应用上线后,运行状态、指标、健康和故障排查如何被持续看见。

3.11 定时任务与任务调度

应用里的后台任务如何按固定节奏触发,以及进入集群后调度边界该怎么判断。

虽然平时常在 Spring Boot 项目里用到,但它本质上还是 Spring Framework 这条线上的能力。


4. Spring 各层之间是什么关系

这部分如果不理顺,后面很容易学乱。下面这层关系先放清楚:

  1. Spring Framework 是基础底座
  2. Spring MVC 是 Spring 体系里的 Web 层框架
  3. Spring Boot 是在 Spring 基础上进一步简化项目搭建和配置的体系
  4. Spring Cloud 则更多建立在 Spring Boot 之上,面向微服务治理

所以更自然的关系是:

text
Spring Framework
    └── Spring MVC
            └── Spring Boot
                    └── Spring Cloud

这不是严格的源码依赖树,更像是一条学习顺序和能力分层的参考线。


5. 常见注解地图

在真正展开各个专题之前,可以补一张“注解地图”。

很多人学 Spring 时容易乱,一个直接原因就是:平时常见的注解都写在同一个项目里,但它们并不处在同一层。

更自然的区分方式是:有些注解属于基础容器层,有些属于 Web 层,有些属于 Boot 自动配置层,还有一些属于 Cloud 的微服务治理层。

5.1 Spring FrameworkSpring MVCSpring BootSpring Cloud 常见注解地图

下面这份列表不是为了把注解全部列完,而是把项目里最常见的注解放回各自的位置。

  1. Spring Framework

    • 组件与容器管理
      • @Component
      • @Service
      • @Repository
      • @Controller
      • @Configuration
      • @Bean
    • 依赖注入与装配控制
      • @Autowired
      • @Qualifier
      • @Primary
      • @Resource
      • @Value
    • Bean 生命周期与作用域
      • @Scope
      • @Lazy
      • @PostConstruct
      • @PreDestroy
    • 配置、导入与环境控制
      • @Import
      • @Profile
      • @PropertySource
    • AOP 与事务
      • @Aspect
      • @Pointcut
      • @Before
      • @After
      • @Around
      • @Transactional
  2. Spring MVC

    • 控制器与请求映射
      • @RestController
      • @RequestMapping
      • @GetMapping
      • @PostMapping
      • @PutMapping
      • @DeleteMapping
      • @PatchMapping
    • 请求参数绑定
      • @PathVariable
      • @RequestParam
      • @RequestBody
      • @RequestHeader
      • @CookieValue
      • @ModelAttribute
      • @RequestPart
    • 响应与状态控制
      • @ResponseBody
      • @ResponseStatus
      • @CrossOrigin
    • 异常处理与绑定增强
      • @ExceptionHandler
      • @ControllerAdvice
      • @RestControllerAdvice
      • @InitBinder
  3. Spring Boot

    • 应用启动与自动配置入口
      • @SpringBootApplication
      • @EnableAutoConfiguration
      • @SpringBootConfiguration
      • @ComponentScan
    • 配置绑定与配置类启用
      • @ConfigurationProperties
      • @EnableConfigurationProperties
      • @ConfigurationPropertiesScan
    • 条件装配
      • @ConditionalOnClass
      • @ConditionalOnMissingBean
      • @ConditionalOnBean
      • @ConditionalOnProperty
      • @ConditionalOnMissingClass
    • 测试与运行时支持
      • @SpringBootTest
      • @LocalServerPort
  4. Spring Cloud

    • 服务注册与发现
      • @EnableDiscoveryClient
      • @LoadBalanced
    • 声明式服务调用
      • @FeignClient
      • @EnableFeignClients
    • 配置刷新与配置治理
      • @RefreshScope
    • 断路、容错与治理扩展
      • 常见会和特定子模块注解一起出现,例如熔断、限流、降级相关注解
      • 这一层注解会更依赖具体技术栈,例如 Resilience4jSentinelNacos

这张注解地图最重要的意义不是“背下来”,而是先分清:

  1. @Service@Autowired 这类更偏基础容器层
  2. @RestController@RequestBody 这类更偏 Web 层
  3. @SpringBootApplication@ConfigurationProperties 这类更偏 Boot 工程化层
  4. @FeignClient@RefreshScope 这类更偏微服务治理层

6. 企业级开发知识地图

如果把 Spring 企业级开发生态按更稳定的结构拆开,可以按下面 6 组理解:

6.1 基础底座

6.2 Web 与应用层

6.3 数据访问与持久化

6.4 服务调用与微服务通信

6.5 微服务治理

6.6 可观测性与运维治理


7. 推荐阅读顺序

如果你想把这条知识线读顺,比较自然的顺序通常是:

  1. Spring Framework 核心基础,建立整体底座认知
  2. 再看 IoC、DI 与 AOP,把 Spring 的核心机制讲透
  3. 再看 Spring 事务详解,把 @Transactional 背后的事务主线真正讲顺
  4. 再看 Bean 生命周期与循环依赖,把容器底层认知补齐
  5. 再看 Spring 定时任务与任务调度,把 spring-context 里的调度能力和应用内任务主线建立起来
  6. 再看 Spring MVC,理解 Web 请求处理主线
  7. 再看 过滤器、过滤器链与 DispatcherServlet,把请求从容器入口到 MVC 内部调用链真正讲顺
  8. 再看 Spring Boot,理解现代 Spring 项目为什么能快速启动
  9. 再看 Spring Boot + Spring AI 项目落地总览,先建立完整项目演进地图
  10. 再看 Spring Boot + Spring AI:最小接入、聊天接口与流式输出,把最小 AI 交互主线跑顺
  11. 再看 Spring Boot + Spring AI:Function Call、工具链调用与 MCP,补上模型如何接外部能力
  12. 再看 Spring Boot + Spring AI:知识库、分片、向量化、召回、重排与向量数据库实战,把知识库问答这条链路真正补完整
  13. 再看 Spring Boot + Spring AI:RAG、Agent 与稳健性治理,补上执行能力和治理能力
  14. 再看 Spring Boot + Spring AI:Agent 完整落地方案,把对话模型、知识库、Tool、MCP、Skill 和 Agent 编排串成一套完整方案
  15. 再看 Spring 参数校验与数据校验,补齐请求边界控制能力
  16. 再看 Spring Security,补上认证、授权和应用安全主线
  17. 再看 加密、解密与密码存储,把密码处理、字段加密和密钥边界讲清楚
  18. 再看 数据脱敏与敏感信息保护,补上日志、响应和展示链路中的敏感数据保护
  19. 再看 Spring 数据访问与数据库整合,建立数据访问总览
  20. 再看 MyBatis,把 SQL 驱动的数据访问链路讲清楚
  21. 再看 RPC、服务调用与 OpenFeign,建立服务间调用主线
  22. 再看 Spring Cloud 总览,建立微服务治理地图
  23. 最后看两个 Spring Cloud 子专题,以及 Spring Boot Actuator 与可观测性,把治理和观测能力接起来

8. 学 Spring 最容易混的几个边界

8.1 Spring 不等于 Spring Boot

Spring 更偏基础框架; Spring Boot 更偏项目搭建、自动配置和工程化简化。

8.2 Spring MVC 不等于整个 Spring

Spring MVC 主要是 Web 层框架,它只是 Spring 生态中的一个关键组成部分。

8.3 Spring Cloud 不等于“微服务自动就做好了”

Spring Cloud 提供的是治理工具和治理模型,不等于一引入就自然拥有正确的服务拆分和稳定性。

8.4 IoC 和 AOP 不是孤立概念

很多事务、日志、权限、校验、扩展能力,本质上都建立在 Spring 容器和代理机制之上。

8.5 安全和治理不是“补充项”

只要系统进入真实生产环境,认证、授权、事务边界、监控治理和流量保护,就都不再是可选知识。

8.6 企业级开发不只是一堆框架名词

真正的企业开发主线,往往是把:

  1. Web 入口
  2. 事务与数据访问
  3. 参数校验
  4. 安全控制
  5. 服务调用
  6. 观测与治理

这些能力串成一条完整链路。


9. 下一批值得继续补的专题

如果继续把企业级开发生态补齐,下一批最自然的专题通常包括:

  1. Spring 事件与异步
  2. Redis 与 Spring Data Redis 整合
  3. 消息队列与 Spring 消费模型
  4. JWT、OAuth2 与单点登录
  5. 多环境配置治理与配置中心实战
  6. 链路追踪、日志体系与告警

9. 一句话总结

Spring 这一条知识线,本质上是在解决:

Java 企业应用如何更清晰地组织对象、处理 Web 请求、管理事务和数据访问、保护系统边界,并在单体到微服务演进过程中逐步补齐服务调用、观测和治理能力。

基于 VitePress 构建的个人技术笔记。