springboot3环境启动器自动配置原理

自动配置原理

接下来将从三个方面分析Springboot3的自动配置原理:环境启动器,主程序,自动配置类。

  1. 导入环境启动器(此处以web环境启动器为例)

    在这里插入图片描述

    1. 环境启动器中含有此环境运行所需的所有依赖

      在这里插入图片描述

    2. 所有的环境启动器中都有spring-boot-starter的依赖,即为starter的starter(核心环境启动器)

    3. spring-boot-starter中又有spring-boot-autoconfiguration依赖

      在这里插入图片描述

    4. spring-boot-autoconfiguration依赖中就含有所有开发场景中的自动配置类。

      在这里插入图片描述

    5. 只要这个包下的类都能生效被加载到容器中,则springboot写好的整合功能就生效了。

    6. 但是SpringBoot自动不会扫描到spring-boot-autoconfiguration包中的组件,因为默认只会扫描主程序所在包及其子包。

  2. 所以springboot是怎么完成自动配置的呢?

    首先:

    ​ 在项目的启动类上有@SpringBootApplication注解,此注解包含

    ​ @SpringBootConfiguration
    ​ @EnableAutoConfiguration
    ​ @ComponentScan

    ​ 三个注解,其中@EnableAutoConfiguration注解中有

      @Import({AutoConfigurationImportSelector.class})
    

​ 此@Import注解会批量导入组件到容器中

​ 其次:
通过断点调试发现:springBoot启动默认会自动加载146个配置类

在这里插入图片描述

​ 这146个配置类来自于,spring-boot-autoconfigure下的META-INF/spring/springframework.boot.autoconfigure.AutoConfiguration.imports文件中。
在这里插入图片描述

​ 但这些自动配置类虽然被加载到了容器中,但其中的配置相关操作是会在特殊场景下触发,是因为在自动配置类中,使用了@ConditionalOnXXX注解。

例如:AOP的自动配置类,是需要在配置文件中,添加spring.aop.auto=true时才可以触发的。

在这里插入图片描述

  1. XXXAutoconfiguration自动配置类
    1. 使用@Bean给容器中放入一堆的组件
      请添加图片描述

    2. 每一个自动配置类都有可能有@EnableConfigurationProperties(XXXProperties.Class)注解,是用于将配置文件中设置的参数,与组件的参数对应起来。就可以达到,修改配置文件对组件的参数进行调整。
      在这里插入图片描述

总结:

1. 导入starter场景启动器
2. 场景启动器中,有核心场景启动器,其中又中包含有146个各个环境的自动配置类。
3. 当springboot启动时,默认会加载这146个自动配置类。
4. 自动配置类按需加载,并且与XXXProperties绑定。
5. 通过修改配置文件,修改组件中的配置值。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值