简介
本文介绍Spring中Bean的生命周期。
BeanFactory中Bean的生命周期
生命周期流程图

流程描述
- 应用启动的时候检查需要被Spring管理的bean;
- 通过BeanFactory#getBean方法获取bean,调用到doCreateBean等方法
- 实例化
- 加入第三级缓存
- 设置属性值
- 根据实现的接口,依次调用初始化前方法(@PostConstruct指定的方法),自定义初始化方法(@Bean(initMethod = “xxx”)的xxx方法),初始化后方法(BeanPostProcesser的postProcessAfterlnitialization)。
- 放入第二级缓存,并从第三级缓存删除
- 放入第一级缓存,并从第二三级缓存删除
- bean被使用,存活到上下文被销毁。
- 销毁的时候调用destroy方法和自定义的销毁方法。
ApplicationContext中Bean的生命周期
基本和BeanFactory中Bean的生命周期一致,区别在于:ApplicationContext中的Bean在BeanFactoryAware#setBeanFactory()和BeanPostProcessor#postProcessBeforeInitialization()中间多了一步:调用ApplicationContextAware#setApplicationContextAware()
请先
!