Spring IoC容器加载过程 vs Bean生命周期对应关系图

复制代码
┌─────────────────────────────────────────────────────────────────────────────┐
│                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完全销毁 → 容器关闭
相关推荐
fīɡЙtīиɡ ℡几秒前
AI 应用系统设计
java·开发语言·人工智能
城管不管9 分钟前
重生——第十一次面试之挖财一面2026.8.19已OC
java·服务器·jvm·数据库·spring·面试·职场和发展
码匠许师傅9 分钟前
【C++ 面试真题】26. 聊聊 C++ 的智能指针
java·c++·面试
AI绘画哇哒哒22 分钟前
【建议收藏!】35岁后端血泪忠告,这3类人别硬转Agent(过来人亲述)
java·人工智能·后端·ai·程序员·大模型·agent
最强小杰1 小时前
gpt-5.6-sol 频繁报 503 怎么办?区分容量熔断和限速 429 的排查方法 + 可复用 retry wrapper
java·人工智能·gpt·ai
今天AI了吗2 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·数据库·人工智能·python·sql·深度学习·机器学习
TELL5212 小时前
selenium webdriver 第二次初始化的异常
开发语言·python
动词ing3 小时前
【C语言】自定义函数+指针入门
c语言·开发语言·算法
重生之后端学习3 小时前
283. 移动零[简单]✅
开发语言·数据结构·算法·leetcode·职场和发展
吠品3 小时前
Wine 在 Linux 上运行 Windows 软件完整指南
java·linux·服务器