标题Spring Boot 启动流程以及自动加载配置流程梳理
Spring Boot的精髓在于自动加载默认配置且可修改,降低了开发者使用Spring 的门槛。本文主要梳理Spring Boot是如何自动加载配置到容器中,使程序运行起来。
Spring 是目前非常流行的一款java应用框架,支持非常多的使用场景。繁琐的配置使用户在应用spring的时候提高了使用门槛,而Spring Boot的出现为开发者降低了使用Spring,减少了许多不必要的配置内容,提高了开发效率。Spring Boot的精髓就是在启动中可以将配置自动加载。今天笔者带领大家一起梳理一下Spring Boot在启动过程中是如何将配置信息加载到程序中的。
从启动方法入手
首先我们准备一个spring boot的项目,找到spring boot的启动类,它的结构大致是这样的
@SpringBootApplication
public class MiniWebApplication {
public static void main(String[] args) {
SpringApplication.run(MiniWebApplication.class, args);
}
}
我们知道,java程序执行都是从main方法开始的。在main中,执行了SpringApplication.run()
方法,这个方法表示SpringApplication的执行入口。在执行run()方法的时候,SpringBoot就已经将所有的配置加载进来了。
@SpringBootApplication
Spring Boot应用标注在某个类上说明这个是SpringBoot的主配置类,SpringBoot应该允许类的main方法启动Spring Boot应用。
我们进入这个注解的定义可以看到:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM