花点时间找到程序入口:
整个自动装配的流程总结如下:
bean工厂后置处理器(ConfigurationClassPostProcessor) 扫描spring.factories和spring-autoconfigure-metadata.properties两个文件,将文件中的自动装配类信息抽象成ConfigurationClass对象,然后将这些对象注册到BeanDefinition以供后续的实例化。
后置处理器(ConfigurationClassPostProcessor) 生成一个解析器ConfigurationClassParser,这个解析器将启动配置类和所有的自动装配配置类抽象成ConfigurationClass对象集合。
beanDefinition加载器将这些ConfigurationClass对象集合注册到BeanDefinition
parser.parser这个方法很重要,这个方法里面主要做了一个事情(里面也会直接注册一些beandefinition):将配置类生成 ConfigurationClass 对象,包括自动装配的配置类和启动类配置类的相关注解。
-
扫描spring.factories、spring-autoconfigure-metadata.properties 里面的自动装配类 并生成对应的配置类对象configClasses;
-
扫描启动类的注解 @PropertySource @ComponentScan @Import @ImportResource @Bean 并生成对应的配置类对象 configClasses。