Skip to content

01 — IoC 容器

定位: Spring 框架的基石——控制反转(IoC)与依赖注入(DI)的原理与实践 面试高频度: ⭐⭐⭐⭐⭐

一、板块在体系中的位置

+----------------------------------------------------+
|                Spring 知识体系                       |
|                                                     |
|  01. IoC 容器 (本板块)                               |
|    | 基石依赖                                        |
|  02. AOP ----> 03. 事务管理                          |
|    |             |                                   |
|  04. Spring MVC  06. 数据访问                        |
|    |                                                  |
|  05. Spring Boot (一切之上)                           |
+----------------------------------------------------+

二、知识全景图

+----------------------------------------------------+
|              IoC 容器核心概念                         |
|                                                     |
|  +----------------------------------------------+  |
|  |    1. IoC/DI 原理                             |  |
|  |    构造器注入 | Setter注入 | 字段注入            |  |
|  |    @Autowired 解析原理 (byType -> @Primary)     |  |
|  +----------------------------------------------+  |
|                      |                              |
|  +----------------------------------------------+  |
|  |    2. Bean 生命周期                           |  |
|  |    实例化 -> 属性赋值 -> Aware -> 前置           |  |
|  |    -> 初始化 -> 后置(AOP) -> 就绪 -> 销毁        |  |
|  +----------------------------------------------+  |
|                      |                              |
|  +----------------------------------------------+  |
|  |    3. 循环依赖与三级缓存                       |  |
|  |    三级缓存(L1/L2/L3) -> 延迟代理创建           |  |
|  +----------------------------------------------+  |
|                      |                              |
|  +----------------------------------------------+  |
|  |    4. 条件装配与作用域                         |  |
|  |    @Profile / @Conditional / 6种Scope         |  |
|  +----------------------------------------------+  |
+----------------------------------------------------+

三、子专题导航

#主题面试频率核心内容
**01.1-IoC与DI原理**⭐⭐⭐⭐⭐控制反转动机、三种注入方式对比、@Autowired 解析原理
**01.2-Bean生命周期**⭐⭐⭐⭐⭐从 BeanDefinition 到销毁的完整生命周期、AOP 代理生成时机
**01.3-循环依赖与三级缓存**⭐⭐⭐⭐⭐三级缓存数据结构、为何不用二级、构造器注入循环依赖
**01.4-条件装配与作用域**⭐⭐⭐⭐6种作用域、@Profile、@ConditionalOnXxx、@Lazy 代理原理

四、核心考点速记

考点 1:三级缓存解决循环依赖

一级缓存 singletonObjects -> 完整 Bean 二级缓存 earlySingletonObjects -> 半成品(提前暴露) 三级缓存 singletonFactories -> ObjectFactory(延迟代理) 关键:三级缓存解决"延迟代理创建"——无循环依赖不提前创建代理。

考点 2:Bean 生命周期中 AOP 时机

AOP 代理在 postProcessAfterInitialization 阶段生成

考点 3:构造器注入 vs 字段注入

  • 构造器注入:不可变性、必填依赖、易测试 -> Spring 推荐
  • 字段注入:代码简洁但难测试、无法做 final -> 不推荐

📚 相关板块

  • **AOP 板块** — AOP 代理在 Bean 生命周期后置处理中生成
  • **事务管理板块** — 声明式事务基于 AOP 实现
  • **进阶源码板块** — refresh() 12 步源码详解

📚 相关链接

  • **Spring文库设计文档** — 文库设计总纲

Knowledge4J — Java 知识库