Bean的生命周期
- Spring启动,查找并加载需要被Spring管理的bean, 实例化,创建一个bean对象。
- 填充属性,为Bean的属性赋值。
- 初始化(如果实现了×××Aware接口,通过不同类型的Aware接口拿到SPring容器中的资源;如果实现了BeanPostProcessor接口,则会回调该接口的postProcessBeforeInitialzation和postProcessAfterInitialization方法;init-method方法,则会执行init-method配置的方法,也就是将调用他们的afterPropertiesSet()方法。类似的,如果bean使用init-method声明了初始化方法,该方法也会被调用。)
- Bean已经准备就绪,可以被应用程序使用了。他们将一直驻留在应用上下文中,直到应用上下文被销毁。
- 销毁阶段(容器关闭后,如果Bean实现了DisposableBean接口,则会回调改接口的destroy方法)
初始化流程方法
销毁方法
在BeanFactory 关闭的时候,Bean的生命周期会调用如下方法:
- DestructionAwareBeanPostProcessor.postProcessBeforeDestruction(): 在销毁之前将此BeanPostProcessor 应用于给定的bean实例。能够调用自定义回调,像是DisposableBean 的销毁和自定义销毁方法,这个回调仅仅适用于工厂中的单例bean(包括内部bean)
- 实现了自定义的destory()方法