“Spring Boot 自动配置图示”的版本间的差异
		
		
		
		
		
		跳到导航
		跳到搜索
		
				
		
		
	
Jihongchang(讨论 | 贡献)  (建立内容为“1”的新页面)  | 
				Jihongchang(讨论 | 贡献)  小 (Jihongchang移动页面Spring Boot 加载自动配置至Spring Boot 自动配置图示)  | 
				||
| (未显示同一用户的6个中间版本) | |||
| 第1行: | 第1行: | ||
| − | + | {| class="wikitable"  | |
| + | ! colspan="7" |@SpringBootApplication  | ||
| + | |-  | ||
| + | |@SpringBootConfiguration  | ||
| + | ! colspan="5" |@EnableAutoConfiguration  | ||
| + | |@ComponentScan(excludeFilters = {   | ||
| + | @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),  | ||
| + | |||
| + | @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class)   | ||
| + | |||
| + | })  | ||
| + | |-  | ||
| + | |@Configuration  | ||
| + | ! colspan="4" |@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 注解标注类的包下的所有组件  | ||
| + | |  | ||
| + | |  | ||
| + | |}  | ||
2023年3月1日 (三) 10:48的最新版本
| @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 注解标注类的包下的所有组件  | 
||||||