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 注解标注类的包下的所有组件 |