AutoConfigurationPackage注解代码如下:
|
|
这个注解的功能是:
- 利用Register给容器导入一系列组件
- 将指定的包下的所有组件导入进来(MainApplication所在的包下)
这个注解存在的意义是,一个一个的导入组件,代码量太大了,而且不太优雅。
@Import(AutoConfigurationImportSelector.class)
这行代码做了什么?
-
利用
getAutoConfigurationEntry(annotationMetadata)
给容器中批量导入一些组件 -
调用
List<String> configurations = getCandidateConfigurations(annotationMetadata, attributes)
获取到所有需要导入到容器中的配置类 -
利用工厂加载
Map<String, List<String>> loadSpringFactories(@Nullable ClassLoader classLoader)
得到所有的组件 -
从META-INF/spring.factories位置来加载一个文件。
- 默认扫描我们当前系统里面所有META-INF/spring.factories位置的文件
- spring-boot-autoconfigure-2.3.4.RELEASE.jar包里面也有META-INF/spring.factories