spring中bean的生命周期
关于spring中bean的生命周期管理请参照下图所示:
一个bean在spring中要经历如下生命过程:
(1)bean的建立
容器寻找bean的定义信息并将其实例化;
(2)属性注入
使用依赖注入,spring按照bean的定义信息配置bean的所有属性;
(3)BeanNameAware的setBeanName()
如果bean实现了BeanNameAware接口,工厂调用bean的setBeanName传递bean的id;
(4)BeanFactoryAware的setBeanFactory()
如果bean实现了BeanFactoryAware接口,工厂调用bean的setBeanFactory传递自身;
(5)BeanPostProcessors的ProcessBeforeInitialization()
如果BeanPostProcessors和bean关联,那么其postProcessBeforeInitialization()方法将被调用;
(6)InitializingBean的afterPropertiesSet()
如果bean实现了InitializingBean接口,那么其afterPropertiesSet()方法将被调用;
(7)bean自己定义的init-method
如果bean的定义信息中定义了init-method方法,那么会执行bean自己的初始化方法;
(8)BeanPostProcessors的ProcessaAfterInitialization()
如果有BeanPostProcessors和bean关联,那么其ProcessaAfterInitialization()方法将被调用;
到此时,bean就可以被应用系统使用了,并被保存在BeanFactory中直到它不再被使用。
有两种方式可以把bean从BeanFactory中删除:
a. 如果bean实现了DisposableBean接口,destory()方法被调用。
b. 如果bean定义了destroy-method方法,则调用该方法。