什么是 spring.factories ?
位于 jar 的 resources/META-INF/spring.factories
它是一个 properties 文件
key 声明的是一个接口; value 声明的是这个接口的实现类, 多个值用逗号分隔
简单来说:
:::info
spring.factories 文件包含了一些接口相对应的实现类的配置.
我们通过这些配置就可以知道接口有哪些可选的实现类, 并通过反射获取对应的实例对象.
这种模式很像简单工厂模式, 因此叫做 spring.factories.
:::
SpringFactoriesLoader
SpringFactoriesLoader 实现了检索 spring.factories 并获取指定接口配置的功能
- loadFactories 根据接口类获取其实现类的实例, 返回的是对象列表
- loadFactoryNames 根据接口获取其接口类的名称, 返回的是类名的列表
@EnableAutoConfiguration 自动装配
在 spring.factories 配置 @EnableAutoConfiguratio 的值为要自动装配的类, 就可以实现自动装配.
这些自动装配类, 不需要被 @ComponentScan 扫描到.
@EnableAutoConfiguration 实现的关键在于引入了 AutoConfigurationImportSelector
:::info
AutoConfigurationImportSelector 会找到 spring.factories 中 @EnableAutoConfiguratio 的所有值, 并将所有符合条件的配置类注入到 IoC 容器中.
AutoConfigurationImportSelector 的核心方法是 selectImports.
:::

实现自己的自动装配
1, 实现配置类
2, 配置 spring.factories
