Sping Boot自动装配原理

  1. 在 SpringBoot 的启动类上有一个@SpringBootApplication注解,这个注解里有一个@EnableAutoConfiguration注解;
  2. @EnableAutoConfiguration注解通过@Import导入了一个AutoConfigurationImportSelector类,该类实现了ImportSelector接口,实现了selectImports()方法,该方法会返回需要自动装配到 Spring 容器中的类的名称;
  3. 再看selectImports()方法,该方法只要有三步:
    1. getCandidateConfigurations方法获取所有的 Bean;
    2. 获取@EnableAutoConfiguration注解中 execlude 指定的不需要自动装配的类;
    3. 返回a中去掉b中的类。

主要看getCandidateConfigurations()方法,该方法里有一个loadFactoryNames()方法,这个方法读取依赖中 META-INF 目录下的 spring.factories 文件,获取 spring.factories 文件中 EnableAutoConfiguration 配置下所有要自动装配的类的名称并返回。

参考文档

SpringBoot 自动装配原理
Spring boot自动配置原理B站视频