SpringBoot自动装配原理
@SpringBootApplication注解是一个复合注解,包含@EnableAutoConfiguration注解,@EnableAutoConfiguration注解中会有@import注解。@import注解解析是在,inoverBeanfactoryPostProcess中解析注解。@import注解引入了AutoConfigurationImportSelector类
AutoConfigurationImportSelector实现DeferredImportSelector接口:又2个比较重要的方法,一个是process() 方法目的是,会获取到META-INF/spring.factories中的配置类,EnableAutoConfiguration然后 @ConditionalOnClass加载配置类。一个是selectImports()会做一些排序,然后统一返回。- DeferredImportSelector接口重写 getImportGroup()
调用 getImportGroup() -> 返回 AutoConfigurationGroup.class ↓ 等Spring 延迟到所有 @Configuration 加载完后: ↓ 创建 AutoConfigurationGroup 实例 ↓ 调用 Group.process() ├── 读取 META-INF/spring.factories ├── 应用 @Conditional 过滤(部分) └── 收集所有配置类到 entries Map ↓ 调用 Group.selectImports() ├── AutoConfigurationSorter 排序 │ ├── @AutoConfigureOrder (数值越小越优先) │ ├── @AutoConfigureBefore (必须在此之前) │ └── @AutoConfigureAfter (必须在此之后) └── 返回排序后的 Entry 列表
2026/9/27大约 4 分钟