refresh - invokeBeanFactoryPostProcessors(beanFactory)

系列文章目录

Spring 5.2.9 source code



前言

invokeBeanFactoryPostProcessors(beanFactory)

主要是实例化并调用已经注册的 BeanFactoryPostProcessor 的方法

包括 Spring 自己注册的 ConfigurationClassPostProcessor 和 用户自己注册的
AbstractApplicationContext 维护了容器 beanFactoryPostProcessors, 用于保存用户自己注册的 BeanFactoryPostProcessor

当前阶段已注册的 BeanfactoryPostProcessor 只有解析配置类的 ConfigurationClassPostProcessor, 所以这里会解析配置类, 把配置类本身, 配置类上面的 @ComponentScan, @Component, @Import, @ImportResouce, @Service 等注解都解析出来, 生成对应的 BeanDefinition 并注册到容器中


invokeBeanFactoryPostProcessors(beanFactory);

protected void invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory beanFactory) {
    
    

	// 
	PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(beanFactory, getBeanFactoryPostProcessors());

	// Detect a LoadTimeWeaver and prepare for weaving, if found in the meantime
	// (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()));
	}
}

猜你喜欢

转载自blog.csdn.net/mrathena/article/details/109098807
今日推荐