Springboot自动配置原理

自动配置:springboot和其他组件(redis、mybatis-plus)整合时,原先要由程序员注入的对象,如redis的RedisTemplate类型对象,现在由springboot来注入,程序员只需要通过注解自动装配后使用即可。

如何将对象注入容器?

既然是springboot,通过配置类注入更符合它的身份,那么自动配置最朴素的流程就是,当我们通过坐标添加相关组件依赖时同时会有已经写好的相关组件的用来迎合自动配置创建好的自动配置相关的配置类。springboot按照约定到指定目录下找到相关配置类的路径,将配置类注入到容器,相应的配置类中的配置也同时生效。

其中有两个细节,一个是springboot如何找到相关配置类的路径,这肯定是某种约定好的,一个是拿到路径后如何将配置类注入,一般手动会选择扫描配置类相关的包路径。

揭示这两个细节

配置类路径(配置类的全限定名称)

以两个版本为例

举出两个版本是因为有一点细微区别
相同点:
    springboot都会在对应的autoconfigure包(例如:org.springframework.boot:spring-boot-autoconfigure)下的META-INF目录下找名为spring.factories的文件
    其中都是按键值对来存放数据,org.springframework.boot.autoconfigure.EnableAutoConfiguration	对应都是springboot自动配置相关的配置类的类路径
区别:
springboot2.6.1  
适应于相同点
springboot2.7.14
会多一个spring的目录,自动配置相关的内容保存在
        org.springframework.boot.autoconfigure.AutoConfiguration.imports中

配置类注入容器

@Import({AutoConfigurationImportSelector.class})
该注解的功能就是将配置类注入容器
实现ImportSelector接口,重写selectImports方法,方法返回的字符串数组中的每一个都是类的全限定名,将这些全限定名指向的配置类注入容器  

按照上面的思路自定义自动配置

springboot默认自动配置中配置类个数144

在这里插入图片描述
在这里插入图片描述

定义启动器

pom文件导入自动配置的坐标

定义自动配置

在resources目录下创建如下内容
在这里插入图片描述

文件中写入

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.xc.config.HuConfig

主项目pom文件中引入启动器坐标

测试:

成功获取自定义配置类全限定名称(路径)
在这里插入图片描述

成功验证配置类注入

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值