Bean的生命周期如下图所示:
从上图,我们可以看出bean的生命周期需要经历如上的阶段:
(1)Spring对Bean进行实例化。
(2)Spring将值和bean的引用注入到bean对应的属性中。
(3)如果bean实现了BeanNameAware接口,则将bean的id传递给setBeanName方法
(4)如果bean实现了BeanFactoryAware接口,则将调用setBeanFactory方法,将BeanFactroy容器实例传入
(5)如果bean实现了ApplicationContextAware接口,spring将调用setApplicationContext方法,将bean所在应用上下文的引用传递进来
(6)如果bean实现了InitializingBean接口,spring将调用他们的afterPropertiesSet方法。
(7)如果实现了BeanPostProcessor接口,Spring将调用他们的postProcessBeforeInitialization方法
(8)如果bean实现了BeanPostProcessor接口,spring将调用他们的postProcessAfterInitialization方法
(9)此时,bean准备就绪,就可以被引用程序使用,一直驻留在应用上下文中,直到该应用上下文被销毁。
(10)如果bean实现了DisposableBean接口,spring将调用它的destroy接口。