SpringBoot-启动过程源码解析
SpringBoot VERSION:2.1.x 这里使用的是Spring Boot 官方自带的Spring Boot Sample - SampleTomcatApplication。
启动前先设置参数:
启动类被 @SpringBootApplication注解修饰。跟踪run方法,我们可以看到跳转进入了SpringApplication类中:
继续往下:
新建SpringApplication实例
可以看到,new了一个SpringApplication出来,看下SpringApplication的构造函数:
1.设置primarySources,用于存储配置类
可以看到,这里就是将启动类的Class对象塞了进去。
2.根据类路径推断容器类型:
ClassUtils.isPresent方法中首先校验是否为基本类型、常用类型,如果是则返回;否则根据前后缀名校验是否为Array,不是则调用 Class.forName 尝试加载指定名称的类。
3.设置应用上下文初始器
尝试获取线程上下文类加载器,如果没获取到则依次获取获取当前类类加载器、系统类加载器。
通过加载META-INF/