Spring Boot 自动配置图示

来自姬鸿昌的知识库
跳到导航 跳到搜索
@SpringBootApplication
@SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = {

@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),

@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class)

})

@Configuration @AutoConfigurationPackage @Import(AutoConfigurationImportSelector.class)
@Retention(RetentionPolicy.RUNTIME) @Documented @Inherited //给容器中导入一个组件

@Import(AutoConfigurationPackages.Registrar.class)

AutoConfigurationImportSelector.java

方法 selectImports

-> 方法 getAutoConfigurationEntry

-> 方法 getCandidateConfigurations

-> SpringFactoriesLoader.loadFactoryNames

加载所有 jar 包下 META-INF/spring.factories

关键位置:

spring-boot-2.3.4.RELEASE.jar

spring-boot-autoconfigure-2.3.4.RELEASE.jar

尤其是

spring-boot-autoconfigure-2.3.4.RELEASE.jar

的 /META-INF/spring.factories

里面有大量自动配置类

最后再进行条件装配

AutoConfigurationPackages.java

static class Registrar

导入 @SpringBootApplication 注解标注类的包下的所有组件