┌─────────────────────────────────────────────────────────────────────────────┐
│                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 执行            │
└─────────────────────────┴─────────────────────────────────────────────────┘

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐