ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();
beanFactory被new出来之后就有默认的7个,
在当前上下文中初始化beanFactory
// Prepare the bean factory for use in this context. prepareBeanFactory(beanFactory);
调用工厂后处理器:根据反射机制从BeanDefinitionRegistry中找到所有实现了BeanFactoryPostProcess接口的bean,并调用其postProcessBeanFactory()方法
// 调用我们的bean工厂的后置处理器. invokeBeanFactoryPostProcessors(beanFactory);
解析配置类
public void processConfigBeanDefinitions(BeanDefinitionRegistry registry) {}
过滤处理传入的主配置类
// Parse each @Configuration class
解析每一个配置类
主要做事的方法是doProcessConfigurationClass()
(ConfigurationClass configClass, SourceClass sourceClass)
在这个方法中有几条注解
// Process any @PropertySource annotations 处理@PropertySource注解
// Process any @ComponentScan annotations 处理任何@ComponentScan扫描到的注解
// Process any @Import annotations 处理@Import注解
// Process any @ImportResource annotations 处理ImportResource注解
// Process individual @Bean methods 处理@Bean注解
// Process default methods on interfaces
// Process superclass, if any
处理完成之后返回null