Bean生命周期涉及到的方法:
1、自身的方法:构造函数实例化函数,调用seter设置bean的属性,通过bean的init-method和destory-method
2、Bean级生命周期接口方法:
BeanNameAware,BeanFactoryAware,InitializingBean,DisposableBean
3、容器级生命周期接口方法:
InstantiationAwareBeanPostProcessor,BeanPostProcessor
将以上这些接口以及容器串联起来后就是下面的顺序,也就是bean的整个生命周期:
1.调用InstantiationAwareBeanPostProcessor的postProcessorBeforeInstantiation()方法
看到这个接口的名字就知道是在类实例化之前做预处理的动作。
2.预处理结束后,开始通过构造函数实例化这个bean。
3.实例化结束后,还可以调用InstatiationAwareBeanPostProcessor的PostProcessorAfterInstantiation().
4.继续调用InstatiationAwareBeanPostProcessor的 postProcessPropertyValus()方法。
在设置bean的属性值之前,对属性做预处理。
5.set设置bean的属性
6.调用BeanNameAware的setBeanName,将该bean的名称设置到bean中
7.调用BeanFactoryAware的setBeanFactory,将beanfactory容器设置到bean中
8.调用BeanPostProcessor的PostProcessBeforeInitialization.这是一个后处理器对bean进加工处理,
可以对bean进行特殊的处理,甚至改变bean的行为。
9.调用InitializingBean的afterPropertiesSet
10.调用init-method属性配置的方法
11.调用BeanPostProcessor的postProcessAfterInitialization
12.调用DisposableBean的afterPropertiesSet释放bean的资源
13 调用通过destory-method属性配置的销毁方法
整个流程看起来有些庞大 ,而且在开发中也很少能够应用到。
某些方法还会和spring的框架绑定在一起了。
以上整个bean的生命周期来自于精通spring2.x企业应用 开发详解,这么书很好 ,作者很强大,
看了之后收益匪浅。