目录

一、Spring 生态的本质定位

1. Spring 是什么?

2. Spring 出现前的问题

二、Spring 生态整体架构(全景视角)

三、Spring Core:整个生态的根基

1. IoC(Inversion of Control)

1.1 什么是 IoC?

2. Bean 的生命周期

3. BeanFactory 与 ApplicationContext

四、Spring AOP:横切逻辑的统一解决方案

1. 什么是横切关注点?

2. Spring AOP 的实现原理

3. AOP 的工程价值

五、Spring MVC:Web 层的中枢系统

1. MVC 在 Spring 中的真实职责

2. 请求完整生命周期(非常重要)

3. 常见注解的真实含义

六、Spring Boot:Spring 生态的“放大器”

1. Spring Boot 不是新框架

2. 三大核心机制

① 自动配置

② Starter 机制

③ 内嵌容器

3. Spring Boot 启动流程

七、Spring Data:数据访问的统一抽象

1. 设计目标

2. Spring Data JPA

3. MyBatis + Spring

八、Spring Security:企业级安全体系

1. 核心能力

2. 核心结构

3. JWT / OAuth2

九、Spring Cloud:微服务生态

1. Spring Cloud 解决的问题

2. 核心组件

3. 微服务调用链

十、Spring 生态中的设计模式总结


一、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,其生命周期极其重要:

  1. 实例化(反射)

  2. 属性注入(DI)

  3. Aware 回调

  4. BeanPostProcessor.before

  5. 初始化方法

  6. BeanPostProcessor.after

  7. 就绪使用

  8. 容器关闭,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 外观、责任链
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐