在主配置类上加上@SpringBootApplication注解 表明这是SpringBoot主配置类,
@SpringBootApplication注解主要由以下注解构成
@SpringBootConfiguration //SpringBoot配置类
@EnableAutoConfiguration //开启自动配置
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
@SpringBootConfiguration 本质是@Configuration 再本质是@Component 所以被@SpringBootConfiguration标注的注解是一个组件。
@EnableAutoConfiguration 注解告诉SpringBoot开启自动配置功能;
这样自动配置才能生效;
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
其中**@AutoConfigurationPackage**:自动配置包
注解实现:
@Import(AutoConfigurationPackages.Registrar.class)
Spring的底层注解@Import,给容器中导入一个组件;导入的组件
由AutoConfigurationPackages.Regiserar.class;
将主配置类所在包及以下包的所有组件扫描到Spring容器;
@Import(AutoConfigurationImportSelector.class);
给容器中添加组件,AutoConfigurationImportSelector:导入那些组件的选择器;将需要导入的组件的全类名以数组的方式返回。最终会给容器中导入非常多的自动配置类(xxxAutoConfiguration);就是给容器中导入这个场景需要的所有组件,并配置号这些组件。
免去了手动编写配置注入功能组件等功能。