SpringBoot运行原理初探
运行原理之POM文件
1.每个springboot项目都有一个parent依赖,pom文件如下
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
2.进入starter-parent
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.7.3</version>
</parent>
可以看到spring-boot-dependencies依赖,这里就是springboot所需要的依赖包,进入查看会发现定义了依赖包的版本信息以及依赖隐式定义。

注:spring-boot-starter-XXX 是场景启动器,如果springboot项目中引入场景启动器,则spring会主动将所需要以来的jar自动引入
运行原理之@SpringBootApplication注解
1.@SpringBootApplication
@SpringBootApplication 是SpringBoot项目的主入口函数,表示spring项目启动从此开始。

继续进入SpringBootApplication

包含最主要的@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan注解,下面一一分析
(1)@SpringBootConfiguration
像一个洋葱一样,一层一层一层剥开他的心...
@SpringBootConfiguration--->@Configuration--->@Component
Configuration对应的就是Spring xml文件
Component对应的是xml中配置的bean
说到底SpringBootConfiguration还是一个Spring Bean的组件

2.@EnableAutoConfiguration

-@EnableAutoConfiguration : 开启自动配置功能,以前我们配置东西都需要自己手动配置,现在通过EnableAutoConfiguration来通知SpringBoot开启自动配置功能,这样自动配置才会生效。
-@AutoConfigurationPackage: 自动配置包
-@import: Spring底层注解import,给容器导入一个组件;

Registrar.class 扫描主启动类所在包的以及下面所有子包的组件,添加到Spring容器中。
AutoConfigurationImportSelector: 将spring.factories的配置添加到Spring容器中。
3.@ComponentScan

这个注解在Spring中非常重要,它对应Spring中的XML配置中的元素。
Component自动扫描并加载复核条件的组件或Bean,将这个Bean定义加载到IOC容器中。
SpringApplication主函数方法

SpringApplication的main方法,开启了一个服务(进程)
分析SpringApplication.run()方法,主要分析SpringApplication的实例化,run方法的执行;
SpringApplication实例化只要做了如下事情:
1.判断启动应用的类型是普通项目还是web项目(通过判断是否引入web模块)
2.查找并加载所有可用的初始化器,设置到initializers属性中
3.查找所有的程序监听器,设置到listeners属性中
4.找到服务运行的主类、
下图为run方法运行的流程分析


浙公网安备 33010602011771号