spring boot 启动过程 [ just do it ]

了解Spring boot启动原理更有助于理解Spring boot

Spring boot启动类

@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
启动类中最重要的两部分,@SpringBootApplication注解和SpringApplication.run()方法。
查看@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 {

}

可以看到这里使用了多个Annotation,其中重要的是
@Configuration(点开@SpringBootConfiguration发现里面还是使用了@Configuration)
@EnableAutoConfiguration
@ComponentScan