AbstractApplicationContext.invokeBeanFactoryPostProcessors()

来源:互联网 发布:mac os sierra dmg u盘 编辑:程序博客网 时间:2024/06/10 01:19

AbstractApplicationContext.run()方法执行过程中,在BeanFactory被准备(prepare)和postProcess之后,
AbstractApplicationContext的invokeBeanFactoryPostProcessors()方法被调用,这个方法用来执行所有
容器中被作为Bean注册BeanFactoryPostProcessor,其实现如下 :

    protected void invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory beanFactory) {        // 真正的 BeanFactoryPostProcessor执行任务委托给工具类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()));        }    }
参考资料

PostProcessorRegistrationDelegate

原创粉丝点击