SpringBoot自动配置原理入门
3.1引导加载自动配置类
@SpringBootConfiguration @EnableAutoConfiguration @ComponentScan( excludeFilters = {@Filter( type = FilterType.CUSTOM, classes = {TypeExcludeFilter.class} ), @Filter( type = FilterType.CUSTOM, classes = {AutoConfigurationExcludeFilter.class} )} )
public @interface SpringBootApplication {}
1.@SpringBootConfiguration
@Configuration 代表当前是一个配置类
2.@ComponentScan
指定扫码哪些包,
3.@EnableAutoConfiguration
由三个注解组合而成
AutoConfigurationPackage @Import({AutoConfigurationImportSelector.class}) public @interface EnableAutoConfiguration {}
1.AutoConfigurationPackage
自动配置包
@Import({Registrar.class}) // 给容器中导入一个组件 public @interface AutoConfigurationPackage {}
利用Registrar给容器导入一系列组件
将指定一个包下的所有组件导入容器,即MainApplication所在包下
2.@Import({AutoConfigurationImportSelector.class})
3.2 按需开启自动配置项
虽然127个场景的所有自动配置启动的时候默认全部加载,但按照条件装配规则,最终会按需配置。