快速理解springBoot的自动装配原理

快速理解SpringBoot的自动装配原理


本文章主要是从代码的角度,跟踪springboot自动装配的原理:
1, 首先我们要知道,根据springboot创建的项目,在启动类中都会有
@SpringBootApplication这个注解,其实所谓的自动装配,也是从这个注解开始,废话不多说,从代码层面跟踪:
在这里插入图片描述
2,我们进入到@springBootApplication注解,发现他实际上还有@EnableAutoConfiguration进行标记,这个从翻译上来讲,我们应该知道他就是能够自动加载配置的注解,我们继续进入@EnableAutoConfiguration这个注解中
在这里插入图片描述
3,进入到@EnableAutoConfiguration,注意一下,有一个导入Bean的注解@Import({AutoConfigurationImportSelector.class}),@Import注解主要用于导入某些特殊的Bean,这些特殊的Bean和Bean Definitaion 有关,那我们可以进入AutoConfigurationImportSelector.class这个类里面,去跟踪那些bean会被加载导入
在这里插入图片描述
4,进入AutoConfigurationImportSelector.class类中,我们可以看到有一个process()方法,通过这个方法的调用,可以获取到所有要加载的bean,(至于为什么会执行这个方法,简单来说就是通过解析注解,然后一步步调用走到这个方法的,这里不做描述)我们继续跟踪这个方法的实现,发现内部调用的是getAutoConfigurationEntry()这个方法,我们可以进去进入到getAutoConfigurationEntry()方法进行跟踪,
在这里插入图片描述

5,进入到getAutoConfigurationEntry()这个方法中,我们可以发现,这个方法内部是调用的getCandidateConfigurations()来获取所有的配置信息,我们继续跟踪getCandidateConfigurations()方法,看是如何拿到或者得知那些bean是要被加载的。
在这里插入图片描述

6,进入到这个getCandidateConfigurations()方法中以后,其实我们就应该很清楚,他是从哪加载的bean了,我们不需要关注他加载的过程,我们只需要看到他那个断言,就会发现,它实际上是要去找所有META-INF/spring.factories这个文件,我们可以继续跟踪loadFactoryNames()方法看如何加载的META-INF/spring.factories
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7,打开spring.factories这个文件,会发现,实际上,这个文件存储的是以key-value形式存储的各个要加载的类的路径,通过这个文件中的配置的路径,就可以找到相应的类,而每一个类中,都会有相应的方法处理去加载bean并放入ioc容器,自动装配的bean就是通过org.springframework.boot.autoconfigure.EnableAutoConfiguration这个key找到符合条件的bean并加入到ioc容器
在这里插入图片描述

以上就是整个springboot自动装配的基本流程,主要是方便道友如何快速的了解springboot的自动装配,欢迎大家提意见,我们共同学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值