美文网首页
Spring容器初始化和getBean回调方法执行流程

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方法触发执行的;
  • 类似的感知上下文环境接口还有以下几个,按照执行顺序排序如下:
    1. EnvironmentAware
    2. EmbeddedValueResolverAware
    3. ResourceLoaderAware
    4. ApplicationEventPublisherAware
    5. MessageSourceAware
    6. ApplicationContextAware

执行InitializingBean接口的afterPropertiesSet方法

执行init-method属性指定的方法

bean销毁阶段

  • 执行DisposableBean接口的destroy方法
  • 执行destory-method属性指定的方法

相关文章

网友评论

      本文标题:Spring容器初始化和getBean回调方法执行流程

      本文链接:https://www.haomeiwen.com/subject/nlpqnhtx.html