Spring BeanFactory管理Bean的生命周期
Spring BeanFactory管理Bean的生命周期
2014-06-14 12:00:08

- Bean的建立:由BeanFactory读取Bean定义文件,并生成各个Bean实例
- 属性注入:执行相关的Bean属性依赖注入
- BeanNameAware的setBeanName():如果Bean类实现BeanNameAware接口,则执行setBeanName()方法。
- BeanFactoryAware的setBeanFactory():如果Bean类实现BeanFactoryAware接口,则执行setBeanFactory()方法
- BeanPostProcessors的processBeforeInitialization():如果任何的BeanPostProcessors实例与Bean实例关联,则执行BeanPostProcessors实例的processBeforeInitialization()方法
- initializingBean的afterPropertiesSet():如果Bean类已实现了org.springframework.beans.factory.InitializingBean接口,则执行它的afterPropertiesSet()方法。
- Bean定义的init-method:可以在Bean定义文件中使用”init-method”属性设定方法名称,进入这个阶段,就会执行initBean()方法。
- BeanPostProcessors的processAfterInitialization():如果任何的BeanPostProcessors实例与Bean实例关联,则执行BeanPostProcessors实例的processAfterInitialization()方法
- DisposableBean的destroy():在容器关闭时,如果Bean类有实现org.springframework.beans.factory.DisposabelBean接口,则执行它的destroy()方法
- Bean定义文件中定义的destroy-method:可以在Bean定义文件中使用” destroy-method”属性设定方法名称,进入这个阶段,就会执行destroyBean()方法。
以上是BeanFactory管理Bean的方法。
如果采用ApplicationContext管理,则会稍有不同。使用ApplicationContext来生成和管理Bean实例的话,在执行BeanFactoryAware的SetBeanFactory()阶段之后,若Bean类上有实现ApplicationContextAware接口,则执行其setApplicationContext()方法,接着才继续进行BeanPostProcessors的processBeforeInitialization()及之后的流程。
浙公网安备 33010602011771号