SpringBoot 自动装配原理剖析

SpringBoot 自动装配原理剖析

当我们启动Spring项目后,一些来自第三方的bean对象就自动存入到IOC容器中,这个过程不需要我们手动声明,却可以直接使用,这就是SpringBoot中的自动装配。

那么SpringBoot是如何实现自动装配的呢?为了搞清楚自动装配的原理,我们得从SpringBoot启动类上的@SpringBootApplication开始入手:

我们知道@EnableXxxx开头的注解下面通常封装了@Import注解,通过@Import注解又会导入相应类。

@Import注解中导入的是ImportSelector接口的实现类,AutoConfigurationImportSelector类中重写的selectImports()方法的返回值会被导入到IOC容器中进行管理,那么这个返回值中到底存储了什么呢?让我们接着往下看:

selectImports()方法中返回值的内容源于方法底层调用的getAutoConfigurationEntry()方法,通过getAutoConfigurationEntry()方法我们获取到需要自动装配的配置类集合

而这个用于获取自动装配配置类信息集合的方法的关键结果来源于getAutoConfigurationEntry()方法调用的getCandidateConfigurations(annotationMetadata, attributes) 方法 ,通过getCandidateConfigurations(annotationMetadata, attributes) 这个方法获取到配置文件中配置的自动配置类的集合信息。

观察该方法断言中信息我们可以得知, META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中保存着需要自动装配的配置类集合信息 ,而getCandidateConfigurations(annotationMetadata, attributes) 方法的作用就是从该文件中读取这些需要自动装配的配置类集合信息。

在**META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports**配置文件中保存的全限定类名对应的需要进行自动装配的配置类实质上是一个配置类,配置类中声明了需要的bean对象:

SpringBoot自动装配的原理图如下:

相关推荐
覆东流2 小时前
7.Java数组
java·开发语言·后端
m0_719084112 小时前
限流和获取请求ip的方法
java
threerocks3 小时前
AI 原生软件开发生命周期手册 - 如何借助 AI,逐阶段改造软件开发生命周期
前端·javascript·后端
lzhdim3 小时前
提高 SQL 语句执行速度的方法
java·开发语言·数据库·sql·oracle
JavaPub-rodert3 小时前
王仕宇在 Go Context 如何解决协程泄漏与超时控制
开发语言·后端·golang·iphone·javapub·王仕宇
深漂的华哥4 小时前
Ruoyi-Plus前后端分离场景下,数据加密传输
java·spring boot·后端·开源·maven·ruoyi
落魄大学生之流水线上谋生计5 小时前
Java锁全面指南:从基础概念到企业级应用
java·开发语言
why技术5 小时前
eli5,我觉得这个全网在吹的技能,使用体验真的很一般啊。
前端·人工智能·后端
学习星球5 小时前
Qwik 框架入门实战:从开源项目 Qwik City 开始,用可恢复性替代水合
后端·前端框架·开源·c5全栈
剑胆琴心静水深流5 小时前
全栈之路6---web集成与呈现
前端·vue.js·spring boot·分布式·spring·前端框架·npm