简介
在传统的Java程序中,实例化一个bean的过程是相当简单的,使用new关键字即可完成创建,然后该bean就可以使用了。一旦该bean不再被使用后,将由java虚拟机自动进行垃圾回收处理。相比之下,Spring创建bean的过程(即Bean的生命周期...
在传统的Java程序中,实例化一个bean的过程是相当简单的,使用new关键字即可完成创建,然后该bean就可以使用了。一旦该bean不再被使用后,将由java虚拟机自动进行垃圾回收处理。
相比之下,Spring创建bean的过程(即Bean的生命周期)就相对复杂多了。对于一个开发者而言,理解Spring的生命周期有时在工作过程中将会事半功倍Spring的生命周期流程图:
那么,下面我就对上图每个过程进行下说明
1、Spring对Bean进行实例化。
2、Spring将Bean的引用、值Set到Bean对应的属性中。
3、如果Bean实现了BeanNameAware接口,Spring将会把ID传给setBean-Name()方法。
4、如果Bean实现了BeanFactoryAware接口,Spring将会调用setBeanFactory()方法,然后将BeanFactory容器实例传入。
5、如果Bean实现了ApplicationContextAware接口,Spring将调用setApplicationContext()方法,将Bean所在的应用上下文的引用传入进来。
6、如果Bean实现了BeanPostProcessor接口,Spring将调用postProcessBeforeInitialization()方法。
7、如果Bean实现了InitializingBean接口,Spring将调用它们的setPreopertiesSet()方法。
8、如果Bean实现了BeanPostProcessor接口,Spring将调用它们的postProcessAfterInitialization方法。
9、到这一步骤后,bean已经准备就绪了,之后会一直存在于应用上下文中,知道应用上下文被销毁。
10、如果Bean调用了DisposableBean接口,Spring会调用它的destory()接口方法。