@SpringBootApplication是SpringBoot的核心注解,它是一个组合注解,源码如下
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class))
public @interface SpringBootApplication {
Class<?>[] exclude() default {};
String[] excludeName() default {};
@AliasFor(annotation = ComponentScan.class, attribute = "basePackages")
String[] scanBasePackages() default {};
@AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses")
Class<?>[] scanBasePackageClasses() default {};
}
@SpringBootApplication组合了@Configuration,@EnableAutoConfiguration以及@ComponentScan,若不使用@SpringBootApplication注解,则可以在入口类上直接使用@Configuration,@EnableAutoConfiguration、@ComponentScan
禁用特定的自动配置
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})