SpringBootApplication 注解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan( excludeFilters = {@Filter( type = FilterType.CUSTOM, classes = {TypeExcludeFilter.class} ), @Filter( type = FilterType.CUSTOM, classes = {AutoConfigurationExcludeFilter.class} )} ) public @interface SpringBootApplication { @AliasFor(annotation = EnableAutoConfiguration.class) Class<?>[] exclude() default {};
@AliasFor(annotation = EnableAutoConfiguration.class) String[] excludeName() default {};
@AliasFor(annotation = ComponentScan.class, attribute = "basePackages") String[] scanBasePackages() default {};
@AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses") Class<?>[] scanBasePackageClasses() default {};
@AliasFor(annotation = ComponentScan.class, attribute = "nameGenerator") Class<? extends BeanNameGenerator> nameGenerator() default BeanNameGenerator.class;
@AliasFor(annotation = Configuration.class) boolean proxyBeanMethods() default true; }
|
@SpringBootApplication 注解是 Spring Boot 中的核心注解,它用于标识一个主要的 Spring Boot 应用程序类。
该注解是一个复合注解,包含:@ComponentScan、@SpringBootConfigure、@EnableAuthConfigure 注解。
@ComponentScan 注解
扫描路径为当前解析这个类所在的包路径。
1 2 3 4 5 6 7 8 9 10
| @AutoConfigurationPackage @Import({AutoConfigurationImportSelector.class}) public @interface EnableAutoConfiguration { String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
Class<?>[] exclude() default {};
String[] excludeName() default {}; }
|
这个注解会负责进行自动配置类的导入,也就是将项目中的配置类自动导入到 Spring 容器中,从而得到解析。
1 2 3 4 5 6 7 8
| @Configuration @Indexed public @interface SpringBootConfiguration { @AliasFor(annotation = Configuration.class) boolean proxyBeanMethods() default true; }
|
相当于 @Configuration 注解,表示当前类是个配置类。