1. Spring Framework(Spring 框架)
- 定位 :整个 Spring 生态的基石(Foundation)。
- 作用 :提供最核心的功能:
- 控制反转(IoC / DI)
- 面向切面编程(AOP)
- 事务管理
- 数据访问抽象(JDBC、ORM 支持)
- Web MVC(
spring-webmvc) - 事件机制、资源管理等
- ✅ 是其他所有 Spring 项目的底层依赖。
💡 类比:Spring Framework 就像"操作系统内核",其他模块是在它之上构建的"应用程序"。
2. Spring Boot
- 定位 :基于 Spring Framework 的快速开发框架(约定优于配置)。
- 目标:简化 Spring 应用的初始搭建和开发过程。
- 关键特性 :
- 自动配置(Auto-configuration)
- 内嵌服务器(Tomcat/Jetty/Netty)
- Starter 依赖(如
spring-boot-starter-web) - Actuator(监控)
- 无 XML 配置(主流使用注解 + Java Config)
- 依赖关系 :
- 内部重度依赖 Spring Framework (比如
spring-context,spring-web,spring-beans等)。 - 它本身不是替代 Spring Framework,而是"封装 + 增强"了它。
- 内部重度依赖 Spring Framework (比如
📌 简单说:Spring Boot = Spring Framework + 自动配置 + 开箱即用的工具链
3. Spring Data
- 定位 :数据访问层抽象框架,统一各种数据存储的操作方式。
- 目标:让开发者用一致的方式访问不同数据源(关系型数据库、NoSQL、搜索引擎等)。
- 子项目举例 :
Spring Data JPA(基于 Hibernate 的 ORM)Spring Data MongoDBSpring Data RedisSpring Data ElasticsearchSpring Data JDBC
- 依赖关系 :
- 基于 Spring Framework (尤其是
spring-tx,spring-beans,spring-core) - 常与 Spring Boot 配合使用(通过
spring-boot-starter-data-jpa等 Starter 快速集成)
- 基于 Spring Framework (尤其是
🔑 关键价值:写一个
Repository接口,不用写实现类,自动帮你生成 CRUD 方法!
4. Spring Cloud
- 定位 :微服务架构解决方案套件。
- 目标 :解决分布式系统中的常见问题:
- 服务发现(Eureka / Nacos / Consul)
- 负载均衡(Ribbon / LoadBalancer)
- 熔断限流(Hystrix / Resilience4j / Sentinel)
- 网关(Gateway / Zuul)
- 配置中心(Config / Nacos / Apollo)
- 链路追踪(Sleuth + Zipkin)
- 依赖关系 :
- 完全基于 Spring Boot(几乎所有 Spring Cloud 组件都是 Spring Boot Starter)
- 底层仍依赖 Spring Framework
- 常结合 Spring Data 使用(例如微服务中每个服务都可能用 JPA 访问数据库)
典型场景:
用 Spring Boot 构建多个独立服务 → 用 Spring Cloud 让它们互相发现、通信、容错 → 用 Spring Data 让每个服务方便操作数据库。
总结关系图(从底向上):
1Spring Framework
2 ↑
3 Spring Boot
4 ↑
5 Spring Data ←→(常配合使用)
6 ↑
7 Spring Cloud
或者更直观的层级结构:
表格
| 层级 | 项目 | 作用 |
|---|---|---|
| 基础层 | Spring Framework | 提供 IoC、AOP、事务、Web MVC 等核心能力 |
| 快速开发层 | Spring Boot | 基于 Spring Framework,简化配置与部署 |
| 数据层 | Spring Data | 统一数据访问,可独立用,但常与 Boot 配合 |
| 微服务层 | Spring Cloud | 基于 Spring Boot,构建分布式系统 |
实际开发中典型组合:
- 单体应用:
Spring Boot+Spring Data JPA/MyBatis - 微服务架构:
Spring Boot+Spring Cloud+Spring Data+MyBatis/JPA - 云原生应用:
Spring Boot+Spring Cloud Kubernetes+Spring Data Redis/MyBatis