Spring Boot 中自动装配机制的原理

(摘自mic老师面试题)
最近一个粉丝说,他面试了 4 个公司,有三个公司问他:"Spring Boot 中自动装配 机制的原理"
他回答了,感觉没回答错误,但是怎么就没给 offer 呢?
对于这个问题,看看普通人和高手该如何回答。
普通人
嗯... Spring Boot 里面的自动装配,就是@EnableAutoConfiguration 注解。
嗯...它可以实现 Bean 的自动管理,不需要我们手动再去配置。
高手
自动装配,简单来说就是自动把第三方组件的 Bean 装载到 Spring IOC 器里面,不需
要开发人员再去写 Bean 的装配配置。
在 Spring Boot 应用里面,只需要在启动类加上@SpringBootApplication 注解就可
以实现自动装配。 @SpringBootApplication 是一个复合注解,真正实现自动装配的注解是
@EnableAutoConfiguration。
(如图)自动装配的实现主要依靠三个核心关键技术。

  1. 引入 Starter 启动依赖组件的时候,这个组件里面必须要包含@Configuration 配
    置类,在这个配置类里面通过@Bean 注解声明需要装配到 IOC 容器的 Bean 对象。
  2. 这个配置类是放在第三方的 jar 包里面,然后通过 SpringBoot 中的约定优于配置
    思想,把这个配置类的全路径放在 classpath:/META-INF/spring.factories 文件
    中。这样 SpringBoot 就可以知道第三方 jar 包里面的配置类的位置,这个步骤主
    要是用到了 Spring 里面的 SpringFactoriesLoader 来完成的。
  3. SpringBoot 拿到所第三方 jar 包里面声明的配置类以后,再通过 Spring 提供的
    ImportSelector 接口,实现对这些配置类的动态加载。
    在我看来,SpringBoot 是约定优于配置这一理念下的产物,所以在很多的地方,都会
    看到这类的思想。它的出现,让开发人员更加聚焦在了业务代码的编写上,而不需要去
    关心和业务无关的配置。
    其实,自动装配的思想,在 SpringFramework3.x 版本里面的@Enable 注解,就有了
    实现的雏形。@Enable 注解是模块驱动的意思,我们只需要增加某个@Enable 注解,
    就自动打开某个功能,而不需要针对这个功能去做 Bean 的配置,@Enable 底层也是
    帮我们去自动完成这个模块相关 Bean 的注入。
    以上,就是我对 Spring Boot 自动装配机制的理解。

    结尾
    发现了吗?高手和普通人的回答,并不是回答的东西多和少。
    而是让面试官看到你对于这个技术领域的理解深度和自己的见解,从而让面试官在一大
    堆求职者中,对你产生清晰的印象。
    好的,本期的普通人 VS 高手面试系列的视频就到这里结束了,喜欢的朋友记得点赞收
    藏。
相关推荐
qq_22589174669 分钟前
基于Flask的空气质量监测与预测分析系统
开发语言·后端·python·信息可视化·django·flask
lhldsg22 分钟前
社区健身系统开发实战:从需求分析到落地部署全流程指南
java·开发语言·小程序·需求分析
覆东流31 分钟前
4.Java运算符与表达式
java·开发语言·后端
JacksonMx40 分钟前
ContentCachingRequestWrapper 实战:解决请求体“只能读一次”的官方方案
java·spring boot·spring
马丁玩编程1 小时前
GitHub 3.5k Star 之后,Ragent AI 框架新版本来了
后端·面试·github
微石科技1 小时前
医疗设备维保如何从被动维修转向预防管理?宁波微石科技让运行数据提前发信号
java·后端·struts
AINative软件工程1 小时前
LLM 应用的 Warm-Up 工程实践:冷启动延迟从 12 秒砍到 800ms 的 5 个工程手段
后端·llm·ai编程
SomeB1oody1 小时前
【RustyML入门】5.1. 回归指标
开发语言·后端·机器学习·rust·教程
学计算机的计算基1 小时前
TCP 传输层硬核整理:三次握手、四次挥手、拥塞控制一次讲透
java·网络·笔记·网络协议·算法
卷无止境1 小时前
手写 SQL 在 Tortoise ORM 里到底能派上什么用场
后端·python·fastapi