spring学习之源码分析--AbstractApplicationContext之refresh也提过了这个接口,这里用图解的方式重新看看这个接口。需要注意的是,在registerBeanPostProcessors中仅是注册,实际调用在getBean中。
大体流程和BeanFactoryPostProcessor是一样的,只是这里多了一个MergedBeanDefinitionPostProcessor接口。
PriorityOrdered
首先是PriorityOrdered排序后,加入BeanPostProcessor的list中。这里加入的,也有是MergedBeanDefinitionPostProcessor的实现类。
Ordered
然后是Ordered排序后,加入BeanPostProcessor的list中,这里也有MergedBeanDefinitionPostProcessor的实现类。
普通
这里是普通的,排序后,加入BeanPostProcessor的list中,这里也有MergedBeanDefinitionPostProcessor的实现类。
MergedBeanDefinitionPostProcessor
最后加入MergedBeanDefinitionPostProcessor,那是不是会和之前的重复呢?
其实他每次加入beanFactory的时候,都会移除当前的PostProcessor,然后再加入。
移除的时候:
重新加入的时候:
这样,MergedBeanDefinitionPostProcessor的子类就放入了list的末尾。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。