Spring 生态体系深度解析—— 从 IoC 核心到微服务架构的完整视角
目录
3. BeanFactory 与 ApplicationContext
一、Spring 生态的本质定位
1. Spring 是什么?
Spring 不是一个单一框架,而是一个围绕 IoC / AOP 构建的 企业级 Java 应用开发生态体系。
它的目标非常明确:
降低企业应用的复杂度,而不是降低功能复杂度
换句话说:
业务可以复杂,但代码结构不能混乱。
2. Spring 出现前的问题
在 Spring 出现之前,Java 企业开发存在几个严重问题:
-
对象创建由程序员手动管理
-
依赖关系硬编码,难以替换
-
横切逻辑(事务、日志)侵入业务代码
-
配置繁杂(EJB、XML 地狱)
Spring 的出现,本质是一场工程范式的改变。
二、Spring 生态整体架构(全景视角)
从工程视角看,Spring 生态可以划分为 六层结构:
┌────────────────────────────┐
│ Spring Cloud │ 分布式 / 微服务
├────────────────────────────┤
│ Spring Boot │ 自动配置 / 快速启动
├────────────────────────────┤
│ Spring Data / Security │ 数据 & 安全
├────────────────────────────┤
│ Spring MVC / WebFlux │ Web 层
├────────────────────────────┤
│ Spring AOP │ 横切关注点
├────────────────────────────┤
│ Spring Core │ IoC / Bean 容器
└────────────────────────────┘
理解顺序非常重要:
Spring Core → AOP → MVC → Boot → Data / Security → Cloud
三、Spring Core:整个生态的根基
1. IoC(Inversion of Control)
1.1 什么是 IoC?
传统代码:
OrderService service = new OrderServiceImpl();
问题:
-
强耦合
-
无法替换实现
-
不利于测试
Spring 的方式:
@Service
public class OrderServiceImpl implements OrderService {}
@Autowired
private OrderService orderService;
-
对象创建权从代码 → 容器
-
依赖关系从硬编码 → 声明式
IoC 的本质是“依赖关系反转”,不是“消除依赖”
2. Bean 的生命周期
Spring 管理的对象称为 Bean,其生命周期极其重要:
-
实例化(反射)
-
属性注入(DI)
-
Aware 回调
-
BeanPostProcessor.before
-
初始化方法
-
BeanPostProcessor.after
-
就绪使用
-
容器关闭,Bean 销毁
AOP 代理对象的生成就在第 4~6 步之间
3. BeanFactory 与 ApplicationContext
| 容器 | 特点 |
|---|---|
| BeanFactory | 懒加载、底层 |
| ApplicationContext | 功能完整、企业级 |
实际开发中几乎只使用
ApplicationContext
四、Spring AOP:横切逻辑的统一解决方案
1. 什么是横切关注点?
-
事务
-
日志
-
权限
-
性能监控
这些逻辑:
-
分散在各处
-
与业务无关
-
修改成本高
2. Spring AOP 的实现原理
核心技术:代理模式
-
JDK 动态代理(接口)
-
CGLIB(继承)
@Around("execution(* com.xxx.service.*.*(..))")
public Object around(ProceedingJoinPoint pjp) throws Throwable {
return pjp.proceed();
}
- 事务、本质上也是 AOP
3. AOP 的工程价值
-
业务代码只关心业务
-
横切逻辑集中维护
-
符合 OCP 原则
五、Spring MVC:Web 层的中枢系统
1. MVC 在 Spring 中的真实职责
| 层 | 职责 |
|---|---|
| Controller | 请求调度 |
| Service | 业务逻辑 |
| Repository | 数据访问 |
| View | 表现层(REST 可忽略) |
2. 请求完整生命周期(非常重要)
浏览器请求
↓
DispatcherServlet(前端控制器)
↓
HandlerMapping(找 Controller)
↓
HandlerAdapter(调用方法)
↓
Controller
↓
HttpMessageConverter
↓
响应
- DispatcherServlet = 外观模式 + 模板方法
3. 常见注解的真实含义
| 注解 | 本质 |
|---|---|
| @Controller | 普通 Bean |
| @RestController | 返回 JSON |
| @RequestMapping | 路由映射 |
| @Autowired | 依赖注入 |
六、Spring Boot:Spring 生态的“放大器”
1. Spring Boot 不是新框架
Spring Boot 的定位非常明确:
简化 Spring 的使用,而不是替代 Spring
2. 三大核心机制
① 自动配置
@EnableAutoConfiguration
底层机制:
-
spring.factories -
条件注解
@ConditionalOnClass
@ConditionalOnBean
@ConditionalOnProperty
- 本质:条件化 Bean 装配系统
② Starter 机制
spring-boot-starter-web
作用:
-
聚合依赖
-
统一版本
-
降低配置成本
③ 内嵌容器
-
Tomcat / Jetty
-
main 方法启动
3. Spring Boot 启动流程
SpringApplication.run()
↓
prepareEnvironment
↓
createApplicationContext
↓
refresh()
- refresh() 是 Spring 的核心方法
七、Spring Data:数据访问的统一抽象
1. 设计目标
让数据访问层代码尽可能“声明式”
2. Spring Data JPA
interface UserRepository extends JpaRepository<User, Long> {
User findByUsername(String username);
}
-
方法名即查询语义
-
动态代理生成实现
3. MyBatis + Spring
-
Mapper 接口
-
SqlSessionFactory
-
代理模式
八、Spring Security:企业级安全体系
1. 核心能力
-
认证(你是谁)
-
授权(你能做什么)
-
安全上下文管理
2. 核心结构
| 组件 | 作用 |
|---|---|
| FilterChain | 请求拦截 |
| SecurityContext | 用户信息 |
| Authentication | 身份凭证 |
3. JWT / OAuth2
-
Spring Authorization Server
-
OAuth2 Resource Server
九、Spring Cloud:微服务生态
1. Spring Cloud 解决的问题
-
服务发现
-
配置管理
-
负载均衡
-
熔断限流
-
网关
2. 核心组件
| 功能 | 组件 |
|---|---|
| 注册中心 | Nacos / Eureka |
| 配置中心 | Config / Nacos |
| 调用 | OpenFeign |
| 网关 | Gateway |
| 熔断 | Resilience4j |
3. 微服务调用链
Client
↓
Gateway
↓
Service A → Feign → Service B
十、Spring 生态中的设计模式总结
| 模块 | 模式 |
|---|---|
| IoC | 工厂、单例 |
| AOP | 代理 |
| MVC | 模板、策略 |
| Boot | 工厂、条件模式 |
| Data | 代理 |
| Cloud | 外观、责任链 |
更多推荐




所有评论(0)