JavaBean的生命周期一般都是浅化理解,就是在在Java中使用关键字new把Bean进行实例化,然后Bean就可以使用了,一旦不使用了,Java会自动进行垃圾回收。
如果是在springBean里面,Bean的生命周期就显得非常复杂,我把它详细了解了一下,分为十个步骤:
1.Bean的实例化:spring启动后,会查找和加载需要被spring管理的Bean,并且实例化。
2.Bean属性注入:Bean被实例化后对将Bean的引入和值注入到Bean的属性中。
3.调用BeanNameAware的setBeanName()方法:如果实现了BeanNameAware接口的话,Spring将Bean的Id传递给setBeanName()方法。
4.调用BeanFactoryAware的setBeanFactory()方法:如果Bean实现了BeanFactoryAware接口的话,spring就将调用他们的setBeanFactory()方法,将BeanFactory容器实例传入。
5.调用ApplicationContextAware的setApplicationContext方法:如果Bean实现了ApplicationContextAware接口的话,spring将调用Bean的setApplicationContext方法,将Bean所在用用上下文引用传入进来。
6.调用BeanPostProcessor的预初始化方法:如果Bean实现了BeanPostProcessor接口,spring将7.调用他们的postProcessBeforeInitialization()方法。
8.调用InitializingBean的afterPropertiesSet()方法:如果Bean实现了InitializingBean接口,spring将9.调用他们的afterPropertiesSet()方法,类似的,如果Bean使用init-method生命了初始化方法的话,这个方法也会被调用。
10.调用BeanPostProcessor的初始化后的方法:如果Bean实现了BeanPostProcessor接口,spring就将调用他们的postprocessAfterInitialization()方法。
11.Bean可以使用了:这个时候,Bean就已经准备好了,可以被应用程序使用了,他们将一直驻留在应用的上下文中,直到应用的上下文被销毁。
12.调用DisposableBean的destory()方法:如果Bean实现DisposableBean接口,spring将嗲用他的destory()就扣方法,相同的,如果Bean使用了destory-method生命销毁方法,该方法也会被调用。