Spring Framework
Todo
以下只是基础大纲,后续需要持续增加内容
结构参考地址:深入理解Spring源码知识-小傅哥
一、Spring IOC - 控制反转与依赖注入
1、 Spring 容器初始化流程
Spring 容器概述
BeanFactoryvsApplicationContext区别与应用场景
核心初始化方法解析
refresh()全流程解析prepareRefresh()—— 容器启动准备obtainFreshBeanFactory()—— 创建 BeanFactoryregisterBeanPostProcessors()—— 注册扩展处理器finishBeanFactoryInitialization()—— 初始化单例 BeanfinishRefresh()—— 发布事件
Spring 和 Spring Boot 中加载的入口
Spring:
ClassPathXmlApplicationContext/AnnotationConfigApplicationContext- 通过
new创建 ApplicationContext,手动指定配置类或 XML 文件,调用refresh()启动容器。
- 通过
Spring Boot:
SpringApplication.run()- 封装了创建上下文、自动加载配置、刷新容器等一系列步骤,最终也是调用
context.refresh()完成启动。 - 支持 Web、Reactive、Servlet 等不同上下文类型,开箱即用的自动配置能力让启动更加简单。
- 封装了创建上下文、自动加载配置、刷新容器等一系列步骤,最终也是调用
2、 Bean 的生命周期解析
- Spring Bean 的完整生命周期
- 实例化前 ——
InstantiationAwareBeanPostProcessor - 初始化阶段 ——
BeanPostProcessor - 初始化后 ——
SmartInitializingSingleton、InitializingBean - 销毁阶段 ——
DisposableBean、@PreDestroy
- 实例化前 ——
3、依赖注入原理
- 注入方式解析
- 构造函数注入 vs Setter 注入
@Autowired、@Resource、@Qualifier注解解析AutowiredAnnotationBeanPostProcessor执行流程@Lazy懒加载实现原理
二、Spring AOP - 面向切面编程
1、动态代理原理
- JDK 动态代理 vs CGLIB 代理 区别与源码解析
ProxyFactory、AdvisedSupport核心类解析- 判断代理方式:
JdkDynamicAopProxyvsCglibAopProxy
2、切面注解解析
@Aspect、@Pointcut、@Before、@After、@Around注解执行流程AnnotationAwareAspectJAutoProxyCreator完整解析AspectJExpressionPointcut切入点解析
3、拦截链执行流程
ReflectiveMethodInvocation.proceed()拦截链执行原理Advisor、Interceptor、Advice关键类解读ExposeInvocationInterceptor解决嵌套代理问题
三、Design - 核心设计模式解析
1、 Spring 三级缓存原理
为什么需要三级缓存?
- 解决循环依赖的问题
三级缓存结构解析
- 一级缓存:
singletonObjects(存放完整单例对象) - 二级缓存:
earlySingletonObjects(半成品对象) - 三级缓存:
singletonFactories(工厂对象,用于创建代理)
- 一级缓存:
getSingleton()` 执行流程
- 创建 Bean -> 提前曝光 -> 代理增强 -> 完成实例化
2、数据类型转换工厂设计实现
Spring 类型转换机制解析
ConversionService、GenericConversionService核心类解析Converter、ConverterFactory、GenericConverter区别
自定义数据转换工厂实现
- 手写
String -> LocalDateTime转换器 - 自定义
@Component转换器注册到容器
- 手写
四、Spring 高级特性解析
1、Spring 事件机制
Spring 内置事件
ContextRefreshedEvent、ContextClosedEvent、RequestHandledEvent
自定义事件与监听器
ApplicationEvent、ApplicationListener、EventMulticaster核心类解析
2、Spring 事务管理
- 事务管理实现原理
@Transactional注解解析TransactionManager、TransactionInterceptor执行流程- 事务传播机制、事务回滚实现细节
3、Spring 扩展点解析
BeanFactory 扩展点
BeanPostProcessor、BeanFactoryPostProcessor、InstantiationAwareBeanPostProcessorFactoryBean、SmartInitializingSingleton
自定义 Starter 实现
- 自定义
@EnableXXX注解 ImportSelector、ImportBeanDefinitionRegistrar实现原理
- 自定义
