SpringBoot自动配置原理

文章目录

  • 前言
  • 一、什么是自动配置
  • 二、查看源码
  • 总结


前置知识:@Import注解的使用方法
参考文章

前言

SpringBoot自动配置是一个比较重要的知识点,经常出现在面试题中,而且以后我们阅读源码也需要了解自动配置相关的知识,本文就来带着大家一步一步的观看源码,理清自动配置的过程


SpringBoot自动配置原理_第1张图片

一、什么是自动配置

在SpringBoot项目中,我们引入的一些依赖,比如:SpringMVC的依赖,Mybatis的依赖,但是我们并没去向开发时使用@Autowired注入Bean对象,这是为什么呢?是因为SpringBoot帮助我们自动注入了,我们就来探究一下SpringBoot是如何帮助我们注入的。

二、查看源码

1.从@SpringBootApplicaton注解开始 ,这个注解大家应该很熟悉,是SpringBoot项目启动类的注解
SpringBoot自动配置原理_第2张图片
2.进入@SpringBootApplication注解
SpringBoot自动配置原理_第3张图片

我们可以看到@SpringBoot注解是由三个注解组合而成,
1.@SpringBootConfiguretion:SpringBoot配置类,不用关注
2.@EnableAutoConfiguretion:SpringBoot自动配置,重点关注
3.@ComponentScan:包扫描:不用关注
我们需要关注的注解从名字就可以看出:开启自动配置,然后我们再次进入这个注解

3.进入@EnableAutoConfiguration注解
SpringBoot自动配置原理_第4张图片

这个注解主要由两个注解组成
@AutoConfiguratioinPackage:不用关注
@Import:重点关注
我们关注一下Import导入的类的名字是:XXXImportSelector,这个类实现了ImportSelector接口,需要重写selectImports()方法,这个方法返回一个数组,在数组里的全类名会自动导入

SpringBoot自动配置原理_第5张图片

然后我们再继续追踪这个方法

SpringBoot自动配置原理_第6张图片

那么我们就去自动依赖里找到这个文件
我这里给了两个依赖,一个是2.6版本,一个是3版本,这里需要说一下,在2.7以前的版本是spring.factories文件,3版本以上是后缀名为import文件,2.7到3之间是两种都支持

SpringBoot自动配置原理_第7张图片

我们进入这个文件,可以看到里面配置的就是全类名

SpringBoot自动配置原理_第8张图片

总结

自动配置原理总结起来就是:
@SpringBootApplication注解组合了@EnableAutoConfiguration注解
@EnableAutoConfiguration注解又组合了Import注解,导入了一个实现类ImportSelector的类
经过层层调用找到了spring.factories或.import文件
然后根据配置条件(@Conditonal及其衍生注解)把满足的Bean注入IOC容器中

你可能感兴趣的:(SpringBoot,spring,boot,java,后端)