SpringBoot启动流程原理解析篇

本文详细介绍了SpringBoot的启动流程,包括创建SpringApplication对象、判断启动类型、加载初始化器和监听器、自动配置和组件扫描。SpringBoot通过简化配置和自动装配功能,极大地提高了开发效率。
摘要由CSDN通过智能技术生成

SpringBoot什么

要想了解spring启动流程的原理首先要知道什么是SpringBoot

Spring大家都知道  boot翻译过来就是启动的意思  SpringBoot就是启动Spring项目的一个工具,SpringBoot其实是依赖于Spring的,可以说SpringBoot是Spring的一个升级版本  它省略了Spring的很多的配置 这就是SpringBoot自身强大的自动装配功能,而且SpringBoot这个框架中内嵌了Tomcat,web的容器,集成了SpringMVC等等这框架,无需我们额外配置Tomcat 

SpringBoot的优点是什么

  1. 简化配置:Spring Boot通过预定义(约定)配置和自动配置帮助开发人员简化配置过程。

  2. 快速启动:Spring Boot提供了一组快速启动工具,可以快速创建、测试和部署应用程序。

  3. 灵活性:Spring Boot允许开发人员选择他们喜欢的工具、库和技术,并使用其他Spring框架的功能。

SpringBoot启动流程

简化版

SpringBoot启动流程源码解析

SpringBoot启动首先是从run方法开始

进入run方法后它会 new 一个SpringApplication 对象,为创建对象的构造函数做了一些准备工作比如它会确定应用程序的一个类型,加载所有的初始化器,去加载所有的监听器,设置程序运行的主类等等这些准备工作

确定程序的启动类型  

在SpringApplication的构造方法内 WebApplicationType.deduceFromClasspath(); 方法判断当前应用程序的容器的启动类型

加载所有的初始化器

点击外部库找到我们的springBoot的jar包

 这里加载的初始化器是springboot自带初始化器

加载初始化器和监听器

 找到main方法所在的类,为扫包作准备,deduce是推断的意思,这个方法作用是推断出主方法所在的类;

设置并启用监听器

设置应用程序的参数 启动run时候将其传入的参数分装成一个对象

 准备环境变量

 实例化应用程序的上下文, 调用 createApplicationContext() 方法,这里使用反射创建对象

Springboot启动类注解

@SpringBootConfiguration 

@EnableAutoConfiguration注解的作用是告诉Spring Boot根据项目中的依赖和约定来自动配置应用程序所需的各种组件和功能

这个注解是springboot的配置类,其作用和@configuration注解是基 本上是一样的,一般建议@SpringBootConfiguration注解代替@Configuration注解,以明确表示该类是一个Spring Boot的配置类。

@EnableAutoConfiguration  

@EnableAutoConfiguration是Spring Boot框架中的一个注解,用于开启自动配置功能(简化配置)。

通常会配合@SpringBootApplication注解一起使用,@SpringBootApplication是一个复合注解,包含了@EnableAutoConfiguration@ComponentScan@SpringBootConfiguration等注解。通过使用@SpringBootApplication注解,我们可以一次性开启组件扫描、自动配置以及将当前类标识为Spring Boot的配置类

通俗地说,当我们使用Spring Boot开发应用程序时,很多配置都需要手动配置,如数据库连接、缓存配置、消息队列等。而通过使用@EnableAutoConfiguration注解,Spring Boot能够根据项目的依赖和约定来自动配置这些组件,从而简化了配置的过程

@EnableAutoConfiguration注解会基于classpath下的依赖和其他条件来推断并自动配置应用程序所需的各种Bean对象。它会扫描项目中的类路径,寻找符合条件的配置类,并根据这些配置类的定义来自动创建相应的Bean对象。这样,我们就不需要手动编写大量的配置代码,Spring Boot会根据约定和默认规则自动完成配置工作


@ComponentScan

用于指定要扫描和自动注册为Spring管理的组件(包括Bean、Controller、Service等)的包路径。

@ComponentScan注解可以放置在配置类上,如标有@Configuration@SpringBootConfiguration注解的类上。它接受一个或多个包路径作为参数,指定要扫描的包和子包,根据一定的规则将其注册为Spring管理的组件。

在组件扫描过程中,@ComponentScan注解会寻找所有标记了@Component及其衍生注解(如@Controller@Service@Repository等)的类,然后将其实例化并加入到Spring容器中。这样,在其他地方需要使用这些组件时,可以直接使用@Autowired等注解进行依赖注入,无需手动创建对象

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值