1. Spring 框架
-
定位:轻量级的企业级应用开发框架,核心是 IoC(控制反转) 和 AOP(面向切面编程)。
-
核心功能:
-
依赖注入(DI):通过
@Autowired
、@Component
等注解管理对象生命周期。 -
事务管理:声明式事务(
@Transactional
)。 -
数据访问:支持 JDBC、ORM(如 Hibernate、MyBatis)。
-
Web MVC:基于 Servlet 的 MVC 框架,处理 HTTP 请求。
-
-
缺点:
-
配置复杂:需手动配置 XML 或 Java Config。
-
依赖管理繁琐:需要手动解决库版本冲突。
-
-
适用场景:传统单体应用,需要精细控制配置的复杂场景。
2. Spring Boot
-
定位:基于 Spring 的快速开发脚手架,目标是 简化配置、快速启动。
-
核心功能:
-
优点:
-
开箱即用:通过
@SpringBootApplication
一键启动应用。 -
约定优于配置:减少 XML 和样板代码。
-
-
适用场景:快速开发微服务或单体应用,适合中小型项目。
3. Spring Cloud
-
定位:基于 Spring Boot 的 分布式系统解决方案,提供微服务架构的完整工具链。
-
核心功能:
-
服务注册与发现:Eureka、Consul、Nacos。
-
配置中心:Spring Cloud Config、Nacos Config。
-
服务调用:Feign(声明式 HTTP 客户端)、RestTemplate + Ribbon(负载均衡)。
-
熔断与限流:Hystrix、Sentinel。
-
API 网关:Spring Cloud Gateway、Zuul。
-
分布式追踪:Sleuth + Zipkin。
-
-
优点:
-
微服务生态:集成 Netflix OSS、Alibaba 等组件。
-
标准化解决方案:提供分布式系统的通用模式实现。
-
-
适用场景:构建大型分布式系统(如微服务架构)。
三者关系示意图
对比表格
特性 | Spring | Spring Boot | Spring Cloud |
---|---|---|---|
核心目标 | 提供企业级开发基础能力 | 简化 Spring 应用开发 | 构建分布式系统(微服务) |
配置复杂度 | 高(需手动配置) | 低(自动配置) | 中等(分布式组件配置) |
依赖管理 | 手动解决依赖 | 起步依赖(Starters) | 集成分布式组件依赖 |
适用场景 | 传统单体应用 | 快速开发单体或微服务 | 微服务架构 |
典型组件 | Spring MVC、Spring Data | Actuator、Auto-Configuration | Eureka、Feign、Hystrix |
实际应用中的选择
-
单体应用:
-
简单场景:直接使用 Spring Boot(快速启动)。
-
复杂场景:结合 Spring + Spring Boot(精细控制配置)。
-
-
微服务架构:
-
Spring Boot 作为单个微服务的开发框架。
-
Spring Cloud 提供分布式能力(如服务发现、配置中心、熔断)。
-
-
传统企业应用:
-
使用 Spring 框架,结合 XML 或 Java Config 管理 Bean。
-
总结
-
Spring 是基础,提供核心功能(IoC、AOP)。
-
Spring Boot 是 Spring 的“加速器”,简化配置和部署。
-
Spring Cloud 是 Spring Boot 的“扩展包”,专为分布式系统设计。
三者并非替代关系,而是逐层增强:
-
从 Spring → Spring Boot:解决开发效率问题。
-
从 Spring Boot → Spring Cloud:解决分布式架构问题。