前言
Springboot的启动类可以是非常简单,其中最关键的两部分是Annotation定义(@SpringBootApplication
)和类定义(SpringApplication.run),这篇文章主要分析其@SpringBootApplication
注解,后续文章再接着分析其类定义。
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
其中参考了《SpringBoot揭秘》里面的分析,也是学习总结了。
@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 {
.....
}
看似有这么多注解,实际上@SpringBootApplication
是一个”三体”结构,重要的只有三个Annotation:
- @Configuration
- @EnableAutoConfiguration
- @ComponentScan
为什么@SpringBootApplication注解
里没有包含@Configuration
,实际上是在@SpringBootConfi