一、官方解释
理解Spring bean 的生命周期很容易。当一个bean 被实例化,他可能需要执行一些初始化使它转化成可以使用的状态。同样,在bean不在需要,并且从容器中移除时,可能需要做一些清除工作。
为了定义安装和拆卸一个bean,我们只需要声明一个init-method和destory-method方法。init-method属性指定一个方法,在实例化bean时,立即调用该方法,同样,destory-method指定了一个方法,只有从容器中移除Bean之后,才能调用该方法。
Bean的生命周期可以表达为:Bean的定义、Bean的初始化、Bean的使用、Bean的销毁。
另一个生命周期的表达:实例化bean、属性赋值、初始化bean、销毁bean
二、初始化回调
void afterPropertiesSet() throws Exception;
三、销毁回调
void destroy() throws Exception;
四、bean初始化流程
1、Spring 启动,查找并加载需要被Spring管理的bean,进行Bean的实例化。
2、bean实例化后将bean的引用和值注入到bean的属性中。
3、如果bean实现了NameAware接口,Spring将bean的id传递给setBeanname方法。
4、如果bean实现了FactoryAware接口,Spring将调用setBeanFactory方法,将BeanFactory容器实例传入。
5、如果bean实现了ApplicationContextAware接口,Spring将调用Bean的setApplicationContext方法,将bean所在的引用上下文引用传递进来。
6、如果bean实现了initalizingBean接口,Spring将调用他们的afterPropertiesSet方法。类似的,如果Bean使用init-method声明了初始化方法,该方法会被调用。
7、如果bean实现了BeanPostProcessor接口,Spring将调用他们的postProcessAfterInitialzation方法。
8、此时bean已经准备就绪,可以被应用程序使用了。直到bean调用destory方法。