通俗易懂版!把 Spring 家族三剑客讲成人话,让你 10 分钟彻底搞懂它们是谁、干什么、怎么配合用!
1. Spring(老大哥,2004年出生)
角色:Java 界的“胶水” + “管家”
最核心的两个功能:
- IoC 容器(控制反转):以前你 new 对象,现在全部交给 Spring 管,你只需要说“我要一个用户服务”,Spring 就给你一个现成的。
- AOP(面向切面):比如所有接口都要记录日志、检查权限,你不用在每个方法里写一遍,Spring 帮你在“横切面”统一处理。
打个比方:
你开饭店,以前你自己养鸡、种菜、洗碗、收银(自己 new 一切)。用了 Spring 之后:
- 所有食材、厨师、服务员都由 Spring 市场统一采购和管理(IoC)
- 卫生检查、收银机自动打折这些公共事务,由 Spring 监管局统一搞定(AOP)
缺点:配置超级麻烦!光一个 XML 配置文件能写几百行,启动也慢。
2. Spring Boot(亲儿子,2014年出生)
角色:老大哥的“傻瓜式升级包”,让你 3 秒启动项目
它不是一个新框架,而是把老爹 Spring 用得好的人总结出来的“最佳实践”打包成了自动配置。
Spring Boot 干了三件大好事:
- 起步依赖(starter):
想用网页功能?加一个 spring-boot-starter-web
想连 MySQL + MyBatis?加一个 mybatis-starter
一行依赖搞定几十个jar包! - 自动配置:以前要写100行XML,现在一行都不用写,Spring Boot 看到你加了什么jar,就自动帮你配置好。
- 内嵌 Tomcat:打成一个 fat jar,直接 java -jar 运行,不需要再单独装Tomcat服务器。
举个最经典的例子:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
就这十几行代码,一个能接收 HTTP 请求的后端服务就跑起来了!比传统 Spring 项目少90%的配置。
总结:Spring Boot = Spring + 一堆最佳配置 + 约定大于配置
3. Spring Cloud(孙子,2015年左右出生)
角色:专门为“微服务”而生的工具集
现在公司都不搞一个大项目了,拆成几十上百个小微服务(订单服务、用户服务、支付服务…),这就带来了新问题:
- 服务怎么发现彼此?
- 调用超时了怎么办?
- 配置改了怎么让100个服务同时更新?
- 某个服务挂了怎么办?
Spring Cloud 就是一套微服务治理的“组合拳”,常用组件对应解决的问题:
| 组件 | 解决什么问题 | 相当于现实中的什么 |
|---|---|---|
| Eureka / Nacos | 服务注册与发现 | 电话黄页 |
| Ribbon / LoadBalancer | 客户端负载均衡 | 智能分流客服 |
| OpenFeign | 声明式远程调用 | 像调用本地方法一样调远程 |
| Hystrix / Resilience4j | 熔断、降级 | 保险丝,防止雪崩 |
| Gateway / Zuul | API 网关 | 小区门卫,统一入口 |
| Config | 配置中心 | 总部统一发通知 |
| Bus | 配置自动刷新 | 群发微信通知 |
| Sleuth + Zipkin | 链路追踪 | 快递物流跟踪 |
现在最流行的是 Spring Cloud Alibaba 套装(Nacos + Sentinel + Seata 等),比原来那一套更轻量好用。
三者关系一句话总结(超级重要!)
- Spring:核心框架,提供 IoC 和 AOP(地基和钢筋)
- Spring Boot:基于 Spring 的快速开发套件,解决配置地狱(盖房子神器)
- Spring Cloud:基于 Spring Boot 的微服务治理方案(管小区物业)
实际项目中常见组合:
- 单体项目:Spring Boot 就够了
- 中大型分布式系统:Spring Boot + Spring Cloud
- 传统老项目:还在用纯 Spring + Spring MVC + XML 配置(正在被淘汰)
经典比喻(记住这个就行了!)
- Spring = 手动挡汽车(功能强大但开起来累)
- Spring Boot = 自动挡汽车(解放双手,一键启动)
- Spring Cloud = 自动挡 + 车联网 + 自动驾驶辅助系统(适合跑高速、车队行驶)
现在面试基本只问 Spring Boot 和 Spring Cloud,纯 Spring 基本只在老项目维护时见到啦!
一句话结论:
学 Java 后端 → 先掌握 Spring Boot(90%公司都在用)→ 项目大了再学 Spring Cloud 做微服务 → 深入时再回头看 Spring 原理。
搞懂了这三把剑,Java 后端世界基本任你逛!