BeanPostProcessor使用的是责任链,大部分是返回为空执行下一个BeanPostProcessor
调用BeanDefinitionRegistryPostProcessor的postProcessorBeanDefinitionRegistry方法在调用postProcessorBeanFactory
然后调用BeanFactoryPostProcessor的postProcessorBeanFactory。
BeanDefinitionRegistryPostProcessor是BeanFactoryPostProcessor的子类,所以BeanFactoryProcessor是在BeanFactory准备后调用
用bean创建之前调用InstantiationAwareBeanPostProcessor的postProcessBeforeInstantiation如果返回不是为空,就调用BeanPostProcessor的postProcessAfterInitialization返回不为空就返回此值作为bean
上面的为空的话执行下面的
调用SmartInstantiationAwareBeanPostProcessor的determineCandidateConstructors来决定用哪一个构造器,返回的是一个Constructor数组使用第一个元素
调用MergedBeanDefinitionPostProcessor的postProcessMergedBeanDefinition方法,此方法是允许修改合并BeanDefinition的方法
在调用InstantiationAwareBeanPostProcessor的postProcessAfterInstantiation