当前位置: 首页 > news >正文

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 高手面试系列的视频就到这里结束了,喜欢的朋友记得点赞收
藏。
http://www.lryc.cn/news/223791.html

相关文章:

  • 如何安装Wnmp并结合内网穿透实现外网访问内网Wnmp服务
  • 网工内推 | 上市公司,云平台运维,IP认证优先,13薪
  • Linux安装DMETL4
  • Python中编码声明的方法
  • css设置浏览器表单自动填充时的背景
  • windows系统下查看安卓apk的sha1
  • openGauss学习笔记-116 openGauss 数据库管理-设置数据库审计-审计概述
  • python编程复习系列——week2(Input Output (2))
  • 为什么HTTP用得很好的,开始普及HTTPS呢?
  • C++day6作业
  • 【 毕设项目源码推荐 javaweb 项目】 基于 springboot+vue 的图书个性化推荐系统的设计与实现(springboot003)
  • FFmpeg编译hevc版本,支持mac、linux系统
  • AI系统ChatGPT程序源码+AI绘画系统源码+支持GPT4.0+Midjourney绘画+已支持OpenAI GPT全模型+国内AI全模型
  • Unity 3D 调整cube的颜色
  • 数字通信和fpga概述——杜勇版本学习笔记
  • 17.复制字符串 ,包括\0
  • C# List<T>.IndexOf()方法的使用
  • 深入理解JVM虚拟机第十八篇:JVM种局部变量表结构的认识
  • zabbix监控安装-linux
  • 7+差异分析+WGCNA+PPI网络,学会了不吃亏
  • 接口自动化测试
  • SPASS-描述性分析
  • kafka-go操作kafka
  • 如何判断被DDoS攻击
  • web —— html
  • 【C/PTA】数组练习(编程)
  • 力扣:155. 最小栈(Python3)
  • uniapp实现在线PDF文件预览
  • Python tkinter实现复刻Windows记事本UI和菜单的文本编辑器(一)
  • 【系统架构设计】架构核心知识: 3.3 DSSA和ABSD