加载入口
public void refresh() throws BeansException, IllegalStateException {
// Invoke factory processors registered as beans in the context.
invokeBeanFactoryPostProcessors(beanFactory);
// Register bean processors that intercept bean creation.
registerBeanPostProcessors(beanFactory);
...
PostProcessorRegistrationDelegate.registerBeanPostProcessors,注册BeanPostProcessor到BeanFactory的beanPostProcessors中
List<BeanPostProcessor> beanPostProcessors = new CopyOnWriteArrayList<>()
- 注册PriorityOrdered的BeanPostProcessor
// First, register the BeanPostProcessors that implement PriorityOrdered.
sortPostProcessors(priorityOrderedPostProcessors, beanFactory);
registerBeanPostProcessors(beanFactory, priorityOrderedPostProcessors);
- 注册实现Ordered的BeanPostProcessor
// Next, register the BeanPostProcessors that implement Ordered.
List<BeanPostProcessor> orderedPostProcessors = new ArrayList<>(orderedPostProcessorNames.size());
for (String ppName : orderedPostProcessorNames) {
BeanPostProcessor pp = beanFactory.getBean(ppName, BeanPostProcessor.class);
orderedPostProcessors.add(pp);
if (pp instanceof MergedBeanDefinitionPostProcessor) {
internalPostProcessors.add(pp);
}
}
sortPostProcessors(orderedPostProcessors, beanFactory);
registerBeanPostProcessors(beanFactory, orderedPostProcessors);
- 注册其他BeanPostProcessor
// Now, register all regular BeanPostProcessors.
List<BeanPostProcessor> nonOrderedPostProcessors = new ArrayList<>(nonOrderedPostProcessorNames.size());
for (String ppName : nonOrderedPostProcessorNames) {
BeanPostProcessor pp = beanFactory.getBean(ppName, BeanPostProcessor.class);
nonOrderedPostProcessors.add(pp);
if (pp instanceof MergedBeanDefinitionPostProcessor) {
internalPostProcessors.add(pp);
}
}
registerBeanPostProcessors(beanFactory, nonOrderedPostProcessors);
- 注册内部BeanPostProcessor
// Finally, re-register all internal BeanPostProcessors.
sortPostProcessors(internalPostProcessors, beanFactory);
registerBeanPostProcessors(beanFactory, internalPostProcessors);
PriorityOrdered的BeanPostProcessor
![](https://img.haomeiwen.com/i6691296/8277d5ce0f92fbae.png)
f33bbf7894dd565c05724485791c0779.png
实现Ordered的BeanPostProcessor
![](https://img.haomeiwen.com/i6691296/67ce7bed5d0a3cfa.png)
f1d44a8ed15ce44458ff1f4e97d20bbe.png
其他BeanPostProcessor
![](https://img.haomeiwen.com/i6691296/be51488068ebb9ae.png)
8f2304d6db1f76e4f3675aaf046ac7f6.png
内部BeanPostProcessor
网友评论