[5-02-01].第10节:自动配置 - 自动配置流程

发布于:2025-06-15 ⋅ 阅读:(19) ⋅ 点赞:(0)

SpringBoot学习大纲


一、自动配置流程:

2.1.什么是按需加载所有的自动配置项:

  • 1.SpringBoot中有非常多的starter,我们只有引入了这个场景的场景启动器,自动配置才会开启
  • 2.场景启动器除了会导入相关功能依赖,还都会导入一个spring-boot-starter是所有starter的starter,基础核心starter
  • 3.spring-boot-starter导入了一个包 spring-boot-autoconfigure
    • SpringBoot所有的自动配置功能都在spring-boot-autoconfigure 包里面
    • 虽然全场景的自动配置都在 spring-boot-autoconfigure这个包,但不是全都开启生效的
  • 4.org.springframework.boot.autoconfigure包下面可以看到各组件的一些自动配置
    在这里插入图片描述
  • 5.在 SpringBoot 的自动配置autoconfigure包中 , 一般是 XxxAutoConfiguration.java, 对应XxxxProperties.java, 如图
    在这里插入图片描述

1.1.定位xxxxAutoConfiguration位置:

  • 1.引入开发所需要的场景启动器后,就会导入相关场景的所有依赖 -> 每个场景启动器都引入了一个spring-boot-starter,这个是核心场景启动器 -> 核心场景启动器引入了spring-boot-autoconfigure包
    在这里插入图片描述
  • 2.spring-boot-autoconfigure里面包含了所有场景的所有配置
    在这里插入图片描述
  • 3.在所有场景的配置中,都有xxxxAutoConfiguration自动配置类:
    在这里插入图片描述

1.2.总结:

  • SpringBoot先加载所有的自动配置类
  • 每个自动配置类都是按照条件进行生效的
  • 生效的配置类就会给容器中装配很多个组件
  • 只要容器中有这些组件,就相当于这些功能就具有了

二、属性绑定:

2.1.分析@EnableConfigurationProperties(ServerProperties.class):

  • 1.每个自动配置类都可能有注解@EnableConfigurationProperties(ServerProperties.class),用来把配置文件中配的指定前缀的属性值封装到 xxxProperties属性类中
  • 2.在容器中使用@Bean放一堆组件

2.2.举例:

  • 1.以Tomcat为例:把服务器的所有配置都是以server开头的,配置都封装到了属性类中
    在这里插入图片描述
    在这里插入图片描述
  • 2.给容器中放的所有组件的一些核心参数,都来自于xxxProperties。xxxProperties都是和配置文件绑定,只需要改配置文件的值,核心组件的底层参数都能修改

三、自定义类绑定配置提示:

4.1.自定义类:

在这里插入图片描述


4.2.配置绑定:

a.问题描述:

  • 我们在配置文件与自定义类绑定的时候,没有任何提示,不是很友好,我们需要引入依赖进行解决

b.引入依赖:

在这里插入图片描述

c.测试:

在这里插入图片描述


四、总结SpringBoot开发时的核心流程:

  • 1.导入starter,就会导入autoconfigure包
  • 2.autoconfigure 包里面 有一个文件 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,里面指定的所有启动要加载的自动配置类
  • 3.@EnableAutoConfiguration 会自动的把上面文件里面写的所有自动配置类都导入进来
  • 4.然后xxxAutoConfiguration 回按照条件注解进行按需加载
  • 5.xxxAutoConfiguration给容器中导入一堆组件,组件都是从 xxxProperties中提取属性值,xxxProperties又是和配置文件进行了绑定
    在这里插入图片描述