转载

spring源码-springioc扫描bean定义

ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();

beanFactory被new出来之后就有默认的7个,

spring源码-springioc扫描bean定义

在当前上下文中初始化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

原文  https://segmentfault.com/a/1190000022491879
正文到此结束
Loading...