SpringBoot项目中都有一个如下的启动类。
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class,args);
}
}
其中@SpringBootApplication是这个启动类的核心注解,在它下面又有三个子注解如下:
- @SpringBootConfiguration:配置当前启动类为Bean
- @EnableAutoConfiguration:自动扫描所有启动器依赖中的配置类。
- @ComponentScan:自动扫描启动类所在的包及其子包下使用了@Bean注解的类及其方法。
其中@EnableAutoConfiguration这个注解也是比较核心的。
- @EnableAutoConfiguration 借助自己的一个子注解@Import 的帮助,将所有符合自动配置条件的 bean 定义加载到 IoC 容器。
而main中SpringApplication.run()的作用主要有两个
- 创建SpringApplication对象:进行相关资源的加载,解析@SpringBootApplication注解。
- 调用的是创建的SpringApplication对象的run方法,然后使用资源并启动Tomcat。
下面介绍一下SpringBoot启动的全过程(部分),如下图所示。
看源码如下:
之后run方法会遍历这个List集合中的类路径信息。并反射调用类对象,完成Bean的配置。
然后就会用到我们的yml文件了
稀里糊涂的写完了。。。。。。