Spring容器初始化和getBean回调方法执行流程
作者:
万福来 | 来源:发表于
2020-05-08 19:59 被阅读0次
Spring容器初始化和getBean回调方法执行流程
BeanFactoryPostProcessor接口回调-适用于容器初始化阶段
- 容器初始化阶段执行的BeanDefinitionRegistryPostProcessor回调方法postProcessBeanDefinitionRegistry,该方法允许修改应用上下文中已经按照标准注册好的BeanDefinition对象,所有的标准注册BeanDefinition已经都被加载注册了,但是还没有实例化,在这里允许用户添加自定义的BeanDefinition,该接口继承自BeanFactoryPostProcessor;
- 容器初始化阶段执行的是BeanFactoryPostProcessor回调方法postProcessBeanFactory,该接口是上一个接口的父接口,类似于方法重载了,两个方法的入参不一样,但是上面方法会优先于本方法执行。
bean的Aware接口回调
- BeanNameAware
- BeanClassLoaderAware
- BeanFactoryAware
BeanPostProcessor接口回调-适用于bean实例化阶段
- postProcessBeforeInitialization方法,适用于bean实例化完成之前执行,可以通过该方法修改实例化完成之前的bean对象;
- postProcessAfterInitialization方法,适用于bean实例化完成和执行了各种初始化接口之后执行,通过该方法可以直接获取实例化完成的bean对象。
ApplicationContextAware接口回调-适用于bean实例化完成后阶段
- 该感知接口是通过ApplicationContextAwareProcessor实现,该实现类是基于BeanPostProcessor的postProcessBeforeInitialization方法触发执行的;
- 类似的感知上下文环境接口还有以下几个,按照执行顺序排序如下:
- EnvironmentAware
- EmbeddedValueResolverAware
- ResourceLoaderAware
- ApplicationEventPublisherAware
- MessageSourceAware
- ApplicationContextAware
执行InitializingBean接口的afterPropertiesSet方法
执行init-method属性指定的方法
bean销毁阶段
- 执行DisposableBean接口的destroy方法
- 执行destory-method属性指定的方法
本文标题:Spring容器初始化和getBean回调方法执行流程
本文链接:https://www.haomeiwen.com/subject/nlpqnhtx.html
网友评论