spring boot 启动注解 SpringBootApplication

SpringBootApplication 注解是指示一个配置类,声明一个或多个bean方法,并触发自动配置和组件扫描。

 

查看源码

@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,
attribute = "exclude"
)
Class<?>[] exclude() default {};

@AliasFor(
annotation = EnableAutoConfiguration.class,
attribute = "excludeName"
)
String[] excludeName() default {};

@AliasFor(
annotation = ComponentScan.class,
attribute = "basePackages"
)
String[] scanBasePackages() default {};

@AliasFor(
annotation = ComponentScan.class,
attribute = "basePackageClasses"
)
Class<?>[] scanBasePackageClasses() default {};
}

可以知道他有4个修饰符和类型

Class<?>[]   

排除特定的自动配置类,这样它们将永远不会被应用。

String[]

排除特定的自动配置类名称,这样它们将永远不会被应用。

Class<?>[]

对scanbasepackages()指定扫描注释组件包类型安全的替代。

String[]

扫描注释组件的基本包。

 

简单的说@SpringBootApplication 已经将@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解的功能实现,不用实现这三个功能了。

posted @ 2017-09-03 18:43  huangpu311  阅读(143)  评论(0)    收藏  举报