┌─────────────────────────────────────────────────────────────────────────────┐
│ Spring IoC 容器加载过程 (宏观流程) │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 1. 资源定位与加载 ───────┐ │
│ │ (Bean尚未诞生,容器在读"说明书") │
│ 2. 解析与注册BeanDefinition │ │
│ │ │
│ 3. BeanFactoryPostProcessor处理 │ │
│ │ (容器在修改"说明书") │
│ 4. 实例化Bean ───────────┼─────────────────────────────────────────────────┤
│ │ Bean的生命周期 (微观过程) │
├─────────────────────────┼─────────────────────────────────────────────────┤
│ │ │
│ │ 4.1 实例化 │──────→ 1. 构造器实例化 (Bean"诞生") │
│ │ │ │
│ │ 4.2 依赖注入 │──────→ 2. @Autowired/@Value/@Resource 属性注入 │
│ │ │ │
│ │ 4.3 Aware接口回调 │──────→ 3. BeanNameAware, BeanFactoryAware等回调 │
│ │ │ │
│ │ 4.4 BeanPostProcessor│────→ 4. postProcessBeforeInitialization │
│ │ 处理 │ │
│ │ │──────→ 5. @PostConstruct 注解方法执行 │
│ │ │ │
│ │ │──────→ 6. InitializingBean.afterPropertiesSet() │
│ │ │ │
│ │ │──────→ 7. 自定义 init-method 执行 │
│ │ │ │
│ │ │──────→ 8. postProcessAfterInitialization (AOP代理)│
│ │ │ │
│ 5. Bean初始化完成,投入使用 │──────→ 9. Bean完全初始化,进入"运行中"状态 │
│ │ │
│ 6. 容器运行期 │──────→ 10. Bean提供服务期 │
│ │ │
│ 7. 容器关闭,销毁Bean │──────→ 11. @PreDestroy 注解方法执行 │
│ │ │
│ │──────→ 12. DisposableBean.destroy() 执行 │
│ │ │
│ │──────→ 13. 自定义 destroy-method 执行 │
└─────────────────────────┴─────────────────────────────────────────────────┘
关键对应关系说明
容器宏观阶段 | Bean微观阶段 | 说明 |
---|---|---|
实例化Bean(第4步) | 完整创建周期(第1-8步) | 这是最核心的对应关系:容器的"实例化Bean"阶段包含了Bean从诞生到可用的全部细致过程 |
Bean初始化完成 | Bean进入运行状态 | 标志着单个Bean和整个容器都准备就绪 |
容器关闭 | Bean销毁周期 | 容器关闭触发所有Bean的销毁流程 |
流程箭头图(展示执行顺序)
容器启动
↓
资源定位 → 解析注册BeanDefinition → BeanFactoryPostProcessor处理
↓
开始实例化Bean(进入微观生命周期)
↓
构造器实例化 → 依赖注入 → Aware回调 → BeanPostProcessor.before
↓
@PostConstruct → afterPropertiesSet → init-method
↓
BeanPostProcessor.after(AOP代理在此生成)
↓
Bean准备就绪 → 容器启动完成
↓
[运行期] Bean提供服务
↓
容器收到关闭信号
↓
@PreDestroy → DisposableBean.destroy() → destroy-method
↓
Bean完全销毁 → 容器关闭