springboot自动装配原理简单分析(自动配置的核心是SPI机制)
话不多说上菜:接下来分为几步去分析
1: @SpringBootApplication自定义注解中配置注解简单分析
@ComponentScan :扫描组件的包
@EnableAutoConfiguration: 自动配置(重点)
@SpringBootConfiguration:配置类(@Configuration)
2:自动配置注解:@EnableAutoConfiguration简单分析
@Import输入注解中配置自动配置选择器AutoConfigurationImportSelector.class(ioc导入配置类)
3:自动配置选择器AutoConfigurationImportSelector简单分析
3.1输入口方法:selectImports(AnnotationMetadata annotationMetadata) 进入获取要加载的config配置文件的全包资源
3.2入口方法中核心调用链方法: AutoConfigurationImportSelector.AutoConfigurationEntry autoConfigurationEntry = this.getAutoConfigurationEntry(annotationMetadata);获取需要自动配置的文件:传入annotationMetadata注解元数据
3.3核心调用链方法中调用核心配置方法:getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes)
3.4:通过SpringFactoriesLoader.loadFactoryNames()方法记载配置信息
3.5:最后通过loadSpringFactories()方法进行读取配置信息。
3.5.1:这里通过什么方式获取到配置信息的:基于spl实现:classPath*扫描:读取META-INF/spring.factories