一、古代篇
第一章:灵根觉醒——Spring Boot 的诞生
- 背景:修仙界中,法宝需求增长,炼器步骤繁琐。
- 创新:Spring大能创造出“Spring Boot”,简化炼器步骤。
第二章:异火点燃——自动装配的奥秘
- 核心:自动装配阵法,通过注解实现。
- 注解:
@SpringBootApplication
:基础注解,包含@EnableAutoConfiguration
。@EnableAutoConfiguration
:包含@Import
,导入AutoConfigurationImportSelector
。@Import
:加载配置类。AutoConfigurationImportSelector
:连接spring.factories
,通过反射读取配置类。
第三章:灵材收集——配置的简化
- 灵材:配置文件(如
application.properties
或application.yml
)。 - 自动装配:简化配置文件的收集与整合。
第四章:灵光乍现——应用的启动
- 启动:通过自动装配,简化应用启动过程。
二、现代篇
了解SpringBoot自动装配原理
- 起点:
@SpringBootApplication
注解。 - 注解组合:
@Target(ElementType.TYPE)
:作用于类、接口。@Retention(RetentionPolicy.RUNTIME)
:注解在运行时存在。@Documented
:生成javadoc时展示注解。@Inherited
:子类继承注解。@SpringBootConfiguration
:标识为SpringBoot配置类。@EnableAutoConfiguration
:实现自动装配。@ComponentScan
:扫描配置类。
@EnableAutoConfiguration
注解
- 组合注解:核心是
@Import(AutoConfigurationImportSelector.class)
。 - 作用:将
AutoConfigurationImportSelector
导入Spring容器。
AutoConfigurationImportSelector
类
- 核心方法:
selectImports
public String[] selectImports(AnnotationMetadata annotationMetadata) { if (!isEnabled(annotationMetadata)) { return NO_IMPORTS; } AutoConfigurationEntry autoConfigurationEntry = getAutoConfigurationEntry(annotationMetadata); return StringUtils.toStringArray(autoConfigurationEntry.getConfigurations()); }
- 实现:
- 读取
META-INF/spring.factories
文件。 - 加载需要装配的配置类集合。
- 使用
getAutoConfigurationEntry
实现加载。 - 使用
getCandidateConfigurations
和SpringFactoriesLoader.loadFactoryNames
读取配置。
- 读取
小结
- 自动装配流程:
@SpringBootApplication
->@EnableAutoConfiguration
->@Import
- 条件过滤:自动装配会进行条件过滤,仅在满足条件时加载配置类。