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所需要的依赖包,进入查看会发现定义了依赖包的版本信息以及依赖隐式定义。
image

注:spring-boot-starter-XXX 是场景启动器,如果springboot项目中引入场景启动器,则spring会主动将所需要以来的jar自动引入

运行原理之@SpringBootApplication注解

1.@SpringBootApplication
@SpringBootApplication 是SpringBoot项目的主入口函数,表示spring项目启动从此开始。
image

继续进入SpringBootApplication
image
包含最主要的@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan注解,下面一一分析

(1)@SpringBootConfiguration
像一个洋葱一样,一层一层一层剥开他的心...
@SpringBootConfiguration--->@Configuration--->@Component
Configuration对应的就是Spring xml文件
Component对应的是xml中配置的bean
说到底SpringBootConfiguration还是一个Spring Bean的组件

image

2.@EnableAutoConfiguration
image

-@EnableAutoConfiguration : 开启自动配置功能,以前我们配置东西都需要自己手动配置,现在通过EnableAutoConfiguration来通知SpringBoot开启自动配置功能,这样自动配置才会生效。

-@AutoConfigurationPackage: 自动配置包
-@import: Spring底层注解import,给容器导入一个组件;
image
Registrar.class 扫描主启动类所在包的以及下面所有子包的组件,添加到Spring容器中。

AutoConfigurationImportSelector: 将spring.factories的配置添加到Spring容器中。

3.@ComponentScan
image

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

SpringApplication主函数方法

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

下图为run方法运行的流程分析
image

posted @   萨莉亚的故事  阅读(47)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示