SpringBoot源码透彻解析—自动装配

花点时间找到程序入口:
SpringBoot源码透彻解析—自动装配_第1张图片
SpringBoot源码透彻解析—自动装配_第2张图片
SpringBoot源码透彻解析—自动装配_第3张图片
SpringBoot源码透彻解析—自动装配_第4张图片
SpringBoot源码透彻解析—自动装配_第5张图片
SpringBoot源码透彻解析—自动装配_第6张图片
SpringBoot源码透彻解析—自动装配_第7张图片
SpringBoot源码透彻解析—自动装配_第8张图片
SpringBoot源码透彻解析—自动装配_第9张图片
SpringBoot源码透彻解析—自动装配_第10张图片
SpringBoot源码透彻解析—自动装配_第11张图片
SpringBoot源码透彻解析—自动装配_第12张图片
SpringBoot源码透彻解析—自动装配_第13张图片
SpringBoot源码透彻解析—自动装配_第14张图片
SpringBoot源码透彻解析—自动装配_第15张图片

整个自动装配的流程总结如下:

bean工厂后置处理器(ConfigurationClassPostProcessor) 扫描spring.factories和spring-autoconfigure-metadata.properties两个文件,将文件中的自动装配类信息抽象成ConfigurationClass对象,然后将这些对象注册到BeanDefinition以供后续的实例化。

后置处理器(ConfigurationClassPostProcessor) 生成一个解析器ConfigurationClassParser,这个解析器将启动配置类和所有的自动装配配置类抽象成ConfigurationClass对象集合。

beanDefinition加载器将这些ConfigurationClass对象集合注册到BeanDefinition

parser.parser这个方法很重要,这个方法里面主要做了一个事情(里面也会直接注册一些beandefinition):将配置类生成 ConfigurationClass 对象,包括自动装配的配置类和启动类配置类的相关注解。

  1. 扫描spring.factories、spring-autoconfigure-metadata.properties 里面的自动装配类 并生成对应的配置类对象configClasses;

  2. 扫描启动类的注解 @PropertySource @ComponentScan @Import @ImportResource @Bean 并生成对应的配置类对象 configClasses。
    SpringBoot源码透彻解析—自动装配_第16张图片

你可能感兴趣的:(spring,boot,java,后端)