自动装配何时开始装配
在服务启动时 @SpringBootApplication 注解里面触发了EnableAutoConfiguration注解
然后开始自动装配。
Bean的注入 需要配置类
spring使用类似SPI的方式 写死配置类的位置和名称key 但是value具体待自动装配的配置类是变换的 可能是redisstarter tomcatstarter等等
import引入写死配置类 写死的配置类 当中有一核心的方法 可以根据spring factory 机上spring的上下文感知 变换的找到对应的value 将具体的自动装配类 找到 以数组的形式存储 就装入到了IOC 容器里
自动装配的流程 SpringBootApplication 中的 EnableAutoConfiguration 注解的作用是把 和组件相关的Bean 装配到IOC容器当中
他是如何做到把bean装配到IOC 容器的
猜想要做到两步1、扫描 2、存储
扫描谁来感知BEAN 如何扫描
扫描到之后用什么数据结构存储BEAN 放到容器
EnableAutoConfiguration 注解里面 含有注解Import注解
Spring会解析Import导入的配置类
spring 将import注解导入的配置类解析 把配置类放入selectImports以入参形式进行批量操作 扫描"META-INF/spring.factories" 下的文件看key=EnableAutoConfiguration 的数据 value是什么 然后有选择的装入IOC
在手动创建starter的时候 要现在写死的位置 factory.properties把写死的key 对应的灵活的value 值写上自己新写的配置类
这样spring boot启动 注解 进enable 进 import进 配置类 进slect方法 扫描文件
发现enable对应的配置类 筛选后 进入IOC
进入容器之外还要对属性进行配置 将配置类和配置文件捆绑便于赋值