当我们启动SpringBoot的时候
(1)SpringApplication.run方法执行流程中有refreshContext(context)这句话
(2)refreshContext内部会解析我们的配置类上的标签,实现自动装配功能的注解@EnableAutoConfiguration
(3)会解析@EnableAutoConfiguration这个注解里面的@Import引入的配置类AutoConfigurationImportSelector
(4)AutoConfigurationImportSelector这个类中有这个方法:
SpringFactoriesLoader.loadFactoryNames(getSpringFactorLoaderFactoryClass(),getBeanClassLoader());
(5)SpringFactorLoaderNames的作用就是读取jar包中的/项目META-INF/spring.factories文件
(6)spring.factories配置了自动装配的类,比如:com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfiguration
(7)根据条件给我们自动装配Bean