1、基本概念

SpringBoot是基于Spring的开源开发框架,通过起步依赖自动配置等特性简化了Spring的开发和部署。

1、起步依赖指的是引入预定义的一组依赖项集合,无需手动管理每个依赖项的版本,可以减少配置工作和依赖项冲突的问题。

1
2
3
4
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

  这个依赖项包含springmvc,tomcat等组件

 

2、自动配置指的是通过基于你引入的依赖Jar包,对 SpringBoot应用进行自动配置

2、自动配置

  1. 自动配置(Auto Configuration):自动配置是Spring Boot的一个核心特性,根据pom.xml引入的依赖对springboot进行自动配置

  2. 自动装配(Auto-wiring):自动装配是Spring框架的一个特性,用于自动解析和设置Bean之间的依赖关系。自动装配可以根据类型、名称或构造函数等方式进行,使得开发者无需手动配置每个Bean之间的关联关系。通过自动装配,可以减少手动配置的工作量,降低了组件之间的耦合。

  例如,springboot实现redis的配置,只需要引入依赖,再配置Redis服务器,然后就可以@autowired直接使用redis的bean对象了,比如redistemplate

3、springboot的启动流程

 1、创建IOC容器

2、加载源配置类,也就是main方法所在的类,被@springbootapplication修饰

3、加载并处理所有的配置类,也就是自动配置

4、实例化所有的bean,并实现依赖注入和自动装配

5、启动web服务器,tomcat服务器

4、自动配置流程

 依赖@springbootapplication注解,这是个复合注解,由@springbootconfiguration,@componentscan和@autoconfiguration组成

 

 autoconfiguracitonimportselector实现流程:

1、通过spring factories机制加载配置文件:通过classloader获取class path中的配置文件META-IF/spring.factories

2、在配置文件中筛选出以enableautoconfiguration.class为key的符合条件的配置类

3、根据注解@conditional过滤掉不必要的自动配置类

4、将配置类注册到IOC容器中,以及将配置类中的@bean方法的返回类型注入到IOC容器中

 5、加载配置类的详细流程

 1、首先是处理@componentscan,递归扫描指定的package,默认是@componentscan修饰类所在的package,得到一系列配置类

2、处理@import注解,递归处理得到一系列被导入的配置类

-@import的作用是提供了一种显式地从其它地方加载配置类的方式,这样可以避免使用性能较差的组件扫描(Component Scan)

3、将配置类注册到IOC容器中,以及将配置类中的@bean方法的返回类型注入到IOC容器中