AbstractApplicationContext.run()方法执行过程中,在BeanFactory被准备(prepare)和postProcess之后,
AbstractApplicationContext的invokeBeanFactoryPostProcessors()方法被调用,这个方法用来应用被作为bean注册到容器中的所有BeanFactoryPostProcessor实例,其实现如下 :
protected void invokeBeanFactoryPostProcessors(
ConfigurableListableBeanFactory beanFactory) {
// 真正的BeanFactoryPostProcessor执行任务委托给
// Spring工具类PostProcessorRegistrationDelegate完成
PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(
beanFactory,
getBeanFactoryPostProcessors());
// 如果同时发现了一个LoadTimeWeaver就做相应的织入准备
// (e.g. through an @Bean method registered by ConfigurationClassPostProcessor)
if (beanFactory.getTempClassLoader() == null
&& beanFactory.containsBean(LOAD_TIME_WEAVER_BEAN_NAME)) {
beanFactory.addBeanPostProcessor(new LoadTimeWeaverAwareProcessor(beanFactory));
beanFactory.setTempClassLoader(
new ContextTypeMatchClassLoader(beanFactory.getBeanClassLoader()));
}
}
本文介绍了Spring框架中BeanFactoryPostProcessor的实现机制及其在AbstractApplicationContext上下文中的调用过程。详细解析了invokeBeanFactoryPostProcessors方法如何利用PostProcessorRegistrationDelegate工具类来执行BeanFactoryPostProcessor实例。
1299

被折叠的 条评论
为什么被折叠?



