@SpringBootApplication的说明

赋料扬雄敌,诗看子建亲。这篇文章主要讲述@SpringBootApplication的说明相关的知识,希望能为你提供帮助。
 
@SpringBootApplication是一个组合注解,用于快捷配置启动类
源码如下:

@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @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 {}; }

【@SpringBootApplication的说明】前四个注解是元注解,用来修饰当前注解,后三个注解是真正起作用的注解
@SpringbootConfiguration 进入@SpringBootConfiguration源码会发现相当于@Configuration,@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的< beans> ,作用为:配置spring容器(应用上下文) @ComponentScan会自动扫描指定包下全部标有@Component的类,并注册成bean,当然包括@Component下的子注解:@Service,@Repository,@Controller;默认会扫描当前包和所有子包。
@EnableAutoConfiguration根据类路径中jar包是否存在来决定是否开启某一个功能的自动配置。
exclude和excludeName用于关闭指定的自动配置,比如关闭数据源相关的自动配置

    推荐阅读