Bean的生命周期
Bean的生命周期
直接写个程序看一下,首先创建一个Person类:
在配置文件中声明一个person的Bean:
在Bean的声明里设置init-method和destroy-method属性,为Bean指定初始化和销毁方法,直接运行一下:
通过结果可以看出首先执行的是构造器,然后执行属性setter方法,再执行指定的初始化方法init,然后Bean就可以使用了,然后关闭IOC容器后,又执行了指定的销毁方法destroy。总结来说:
1. 通过构造器或者工厂方法创建Bean实例
2. 为Bean的属性设置值和对其他Bean的引用‘
3. 调用Bean的初始化方法
3. Bean可以使用了
4. 当容器关闭时,调用Bean的销毁方法
Bean的后置通知处理器
Bean的后置处理器允许在调用初始化方法的前后进行对Bean的额外处理,只要实现BeanPostProcessor接口,这个接口里只要实现两个方法,postProcessBeforeInitialization:在Bean的初始化方法执行之前执行,postProcessAfterInitialization:在Bean的初始化方法执行之后才执行。
我们需要自己写一个类来实现BeanPostProcessor接口,实现2个方法:
注意最后要把bean对象返回,当然这里你可以修改对象的属性,甚至可以new一个新的对象进行替换。
然后还要在配置文件中声明一个Bean,这里不需要写id,Spring可以自动识别,就这么配置就可以:
最后让我们运行一下:
所以只是在Bean的初始化前后加了两个方法,生命周期就变成了这样:
1. 通过构造器或者工厂方法创建Bean实例
2. 为Bean的属性设置值和对其他Bean的引用
3. 调用postProcessBeforeInitialization方法
4. 调用Bean的初始化方法
5. 调用postProcessAfterInitialization方法
6. Bean可以使用
7. 当容器关闭时,调用Bean的销毁方法
注:Bean的后置处理器是针对所有Bean的,如果要针对对应的Bean设置,那就要在方法的内部进行判断。