天天看点

bean的生命周期

bean的构造

调用set方法设置Bean的属性

调用BeanNameAware的setBeanName()方法

调用BeanFactoryAware的setBeanFactory()方法

调用BeanPostProcessor的postProcessBeforeInitialization()方法

调用InitializingBean的afterPropertiesSet()方法,需要bean实现InitializingBean

调用自定义的初始化方法(init-method属性指定该方法)

调用BeanPostProcessor类的postProcessAfterInitialization()方法

调用DisposableBean的destory()方法,需要bean实现DisposableBean

调用自定义的销毁方法(destory-method属性指定该方法)

spring提供了两种后置处理器

Bean后置处理器  对容器中Bean进行后处理,对Bean进行额外加强

容器后置处理器  对IOC容器进行处理,增强容器功能

Bean后置处理器是一种特殊的Bean,这种特殊的Bean并不对外服务,主要负责对容器中的其他Bean执行后处理,例如容器中的目标Bean生成代理等。Bean后处理器会在Bean实例创建成功后,为Bean实例进行进一步的增强处理。实现BeanPostProcessor接口,实现postProcessAfterInitialization和postProcessBeforeInitialization方法。

这里处理完之后一定要将bean返回回去,否则后续无法获取到bean

注:如果使用BeanFactory作为Spring容器,则必须手动注册Bean后置处理器,程序必须获取Bean后置处理器实例,然后手动注册。

容器后置处理器负责容器本身,实现BeanFactoryPostProcessor接口,实现接口的postProcessBeanFactory方法对Spring容器进行处理,可以对Spring容器进行自定义扩展,

在BeanFactory标准初始化之后调用,即所有的BeanDefinition已经保存加载到beanFactory中,但是bean的实例还未创建