您的位置:首页 > 编程语言 > Java开发

Spring日记——BeanFactory中Bean的生命周期

2018-01-31 16:39 295 查看

BeanFactory中Bean的生命周期流程图如下

Created with Raphaël 2.1.2开始调用InstantiationAwareBeanPostProcessor的postProcessBeforeInstantiation方法实例化调用InstantiationAwareBeanPostProcessor的postProcessAfterInstantiation方法,对已实例化对象进行修改调用InstantiationAwareBeanPostProcessor的postProcessPropertyValues方法给Bean设置配置属性调用BeanNameAware的setBeanName方法,设置bean的名字调用BeanFactoryAware的setBeanFactory方法,设置指定的BeanFactory调用BeanPostProcessor的postProcessBeforeInitialization方法,返回加工处理Bean,提供后期加工的切入点如果用实现InitializingBean接口的话,调用InitializingBean的afterPropertiesSet方法调用init-method属性配置的初始化方法调用BeanPostProcessor的postProcessAfterInitialization方法Bean的scope为Singleton?Spring缓存池中准备就绪的Bean调用DisposableBean的afterPropertiesSet方法调用destory-method属性配置的销毁方法结束将准备就绪的Bean交给使用者yesno

以上方法可分为三类

1.Bean自身的方法

Bean的构造方法,通过配置文件去设置Bean的属性,执行Bean的init-method和destory-method

2.Bean集生命周期的方法(个性化处理)

BeanNameAware,BeanFactoryAware,InitializingBean,DisposableBean的接口方法,由Bean类来直接实现

3.容器集生命周期方法(共性化处理)

InstantiationAwareBeanPostProcessor,BeanPostProcessor我们称之为后处理器,一般不由Bean本身实现,它们独立于Bean,实现类以附加装置的形式注入到Spring容器中,Spring创建容器时,这些后处理器都会发生作用

与ApplicationContext不同

调用InstantiationAwareBeanPostProcessor的postProcessBeforeInstantiation方法之前会调用BeanFactoryProcessor的postProcessBeanFactory方法,在调用BeanFactoryAware的setBeanFactory方法之后调用调用ApplicationContextAware的setApplicationContext方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: