InitializingBean扩展点分析


InitializingBean扩展点分析

上面两篇分别分析了扩展点awareBreaProcessesor,接下来继续分析InitializingBean

代码示例

public interface InitializingBean {
    void afterPropertiesSet() throws Exception;
}
  • 代码演示
    8W8Ptf.png
  1. InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation()
  2. InstantiationAwareBeanPostProcessor.postProcessAfterInstantiation()
  3. InstantiationAwareBeanPostProcessor.postProcessProperties()
  4. BeanPostProcessor.postProcessBeforeInitialization()
  5. InitializingBean.afterPropertiesSet()
  6. @Init-Method.initMethhod()
  7. BeanPostProcessor.postProcessAfterInstantiation()

@PostConstruct方法底层还是依赖于BeanPostProcess接口因此应该是在4-5之间进行执行

执行过程

  • 调用方法
  1. populateBean
    8Wetij.png

  2. initializeBean方法

8WeEZD.png

InitializingBean接口是一个作用域为当前bean的接口,通过在初始化完成属性后进行执行

initializeBean方法比较的重要分别执行了AwareaBeanPostProcess的后置方法、invokeInitMethods方法

这三个扩展接口整体的执行流程就是
Instantiation -> BeanPostProcessor.beafore -> InitializingBean -> @Init-Method -> BeanPostProcessor.after

总结:
InitializingBean是作为初始化对象过程赋值完毕后执行的初始化方法


  TOC