- 实例化 Bean 对象:此时 bean 的对象是一个空对象,没有任何属性值
- 填充注入属性:完成这一步时,这个 bean 基本就可以使用了,也就是说 @Autowired 的属性也被注入了
- 如果实现了 BeanNameAware,则调用 setBeanName 方法
- 如果实现了 BeanClassloaderAware,则调用 setBeanClassloader 方法
- 如果实现了 BeanFactoryAware,则调用 setBeanFactory 方法
- 调用 BeanPostProcessor 的 postProcessBeforeInitialization 方法,会执行其他的 Aware 方法和 @PostConstruct
- 如果实现了 InitializingBean,调用 afterPropertiesSet 方法
- 如果定义了 init-method,则调用 init-method 方法
- 调用 BeanPostProcessor 的 postProcessAfterInitialization 方法
- 添加到单例池
- 如果上下文被销毁了,如果 bean 实现了 DisposableBean 接口,则调用 destory 方法
- 如果 bean 定会一了 destory-method 则调用 destory-method 方法