Spring源码分析(6)——BeanPostProcessor

完成Spring各项功能的重要执行器:各种BeanPostProcessor

ApplicationContext就像在BeanFactory上封装的一层壳,而这层壳也不是什么也没做。ApplicationContext会向BeanFactory注册各种Processor,而实际调用依然是BeanFactory做的。

下面就说明一下各种Processor接口的调用时机。

1、BeanFactoryPostProcessor

  • postProcessBeanFactory Bean注册到BeanDefinitionMap之后,但还未实例化前调用

2、BeanPostProcessor

  • postProcessBeforeInitialization Bean实例化之后,在调用Bean的Init方法前被调用

  • postProcessAfterInitialization Bean实例化之后,在调用Bean的Init方法后被调用

3、InstantiationAwareBeanPostProcessor

  • postProcessBeforeInstantiation 实例化前被调用,用于实例化前的短路操作

  • postProcessAfterInstantiation 实例化和提前曝光自身后,在填充属性前被调用

  • postProcessPropertyValues 填充属性时被调用,依赖注入就靠此方法完成

4、MergedBeanDefinitionPostProcessor

  • postProcessMergedBeanDefinition 实例化后但还未提前曝光自身时调用

5、SmartInstantiationAwareBeanPostProcessor

  • determineCandidateConstructors 实例化时调用返回类的构造函数

6、InitializingBean

  • afterPropertiesSet Bean实例化之后,在调用Bean的Init方法时,在所有参数初始化后被调用
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×