一个Bean从创建到销毁,如果是用BeanFactory来生成,管理Bean的话,会经历几个执行阶段,也就是说它的生命周期是怎样的。首先我们来看一张图:
在spring bean生命周期执行的过程如下:
1)spring对bean进行实例化,默认bean是单例
2)spring对bean进行依赖注入
3)如果bean实现了BeanNameAware接口,spring将bean的id传给setBeanName()方法
4)如果bean实现了BeanFactoryAware接口,spring将调用setBeanFactory方法,将BeanFactory实例传进来
5)如果bean实现了ApplicationContextAware()接口,spring将调用setApplicationContext()方法将设置应用上下文对象的引用
6) 如果bean实现了BeanPostProcessor接口,spring将调用它的postProcessBeforeInitialization接口方法
7) 如果bean实现了InitializingBean接口,spring将调用它们的afterPropertiesSet接口方法
8)如果bean使用了init-method属性声明了初始化方法,该方法会被调用
9)如果bean实现了BeanPostProcessor接口,spring将调用它们的postProcessAfterInitialization接口方法
10)此时bean已经准备就绪,可以被应用程序使用了,他们将一直驻留在应用上下文中,直到该应用上下文被销毁
11)若bean实现了DisposableBean接口,spring将调用它的distroy()接口方法
12)如果bean使用了destroy-method属性声明了销毁方法,则该方法被调用