关于java:图解BeanPostProcessor注册

5次阅读

共计 685 个字符,预计需要花费 2 分钟才能阅读完成。

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 的开端。

正文完
 0