当前位置: 首页 > 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 高手面试系列的视频就到这里结束了,喜欢的朋友记得点赞收
藏。

相关文章:

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

(摘自mic老师面试题) 最近一个粉丝说,他面试了 4 个公司,有三个公司问他:“Spring Boot 中自动装配 机制的原理” 他回答了,感觉没回答错误,但是怎么就没给 offer 呢? 对于这个问题…...

如何安装Wnmp并结合内网穿透实现外网访问内网Wnmp服务

文章目录 前言1.Wnmp下载安装2.Wnmp设置3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 WNMP是Windows系统下的绿色NginxMysqlPHP环境集成套件包,安装完成后即可得到一个Nginx MyS…...

网工内推 | 上市公司,云平台运维,IP认证优先,13薪

01 上海新炬网络信息技术股份有限公司 招聘岗位:云平台运维工程师 职责描述: 1、负责云平台运维,包括例行巡检、版本发布、问题及故障处理、平台重保等,保障平台全年稳定运行; 2、参与制定运维标准规范与流程&#x…...

Linux安装DMETL4

Linux安装DMETL4 产品与环境介绍1 规划安装路径2 DM8安装路径2.1 达梦数据库程序安装路径2.2 初始化达梦数据库2.3 创建数据库用户名 DMETL 3 安装DMETL3.1 查看安装包与授权3.2 安装DMETL程序3.3 DMETL安装日志 4 启动DMETL5 DMETL连接数据库后会自动创建相关资源表6 达梦数据…...

Python中编码声明的方法

编码声明主要是为了解决编码问题。由于Python 3的默认编码是UTF-8,因此在使用Python 3编写源代码时,通常不需要在文件开头添加编码声明。但是,如果您使用的编码不是UTF-8,则需要在文件开头添加编码声明,以确保Python解…...

css设置浏览器表单自动填充时的背景

浏览器自动填充表单内容,会自动设置背景色。对于一般的用户,也许不会觉得有什么,但对于要求比较严格的用户,就会“指手画脚”。这里,我们通过css属性来设置浏览器填充背景的过渡时间,使用户看不到过渡后的背…...

windows系统下查看安卓apk的sha1

1.在apk所在文件夹打开cmd或者powershell 2.输入 certutil -hashfile xxx.apk SHA1 这样就可以了 3.指令格式 certutil -hashfile FileName [HashAlgorithm] certutil -hashfile:原样输入 FileName:文件名 HashAlgorithm:可选项包括&…...

openGauss学习笔记-116 openGauss 数据库管理-设置数据库审计-审计概述

文章目录 openGauss学习笔记-116 openGauss 数据库管理-设置数据库审计-审计概述116.1 背景信息116.2 操作步骤 openGauss学习笔记-116 openGauss 数据库管理-设置数据库审计-审计概述 116.1 背景信息 数据库安全对数据库系统来说至关重要。openGauss将用户对数据库的所有操作…...

python编程复习系列——week2(Input Output (2))

文章目录 一、多行代码语句二、Escape序列三、字符串格式四、数值运算课后作业 一、多行代码语句 🥞使用反斜杠\来表示在下一行中继续使用一条语句。 subject_code "CSCI111" subject_mark 80 subject_grade "D" result "Subject re…...

为什么HTTP用得很好的,开始普及HTTPS呢?

显而易见,现在的HTTP早已不安全,当我们在浏览各个网站时会发现HTTP前面都会显示不安全,因为HTTP是明文传输,一旦电脑被植入了木马,木马程序就会主动周期性发消息给Internet的控制终端,这样NAT小洞会一直敞开…...

C++day6作业

1.思维导图 2.编程题: 以下是一个简单的比喻,将多态概念与生活中的实际情况相联系: 比喻:动物园的讲解员和动物表演 想象一下你去了一家动物园,看到了许多不同种类的动物,如狮子、大象、猴子等。现在&am…...

【 毕设项目源码推荐 javaweb 项目】 基于 springboot+vue 的图书个性化推荐系统的设计与实现(springboot003)

简介 :::warning 【 毕设项目源码推荐 javaweb 项目】 基于 springbootvue 的图书个性化推荐系统的设计与实现适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负…...

FFmpeg编译hevc版本,支持mac、linux系统

相关前置库 openssl 仓库:https://github.com/openssl/openssl.git编译方式参考INSTALL.md中的步骤 # Unix / Linux / macOS$ ./config$ make && sudo make installlame库 如果需要处理mp3相关,依赖lame库, 仓库:https…...

AI系统ChatGPT程序源码+AI绘画系统源码+支持GPT4.0+Midjourney绘画+已支持OpenAI GPT全模型+国内AI全模型

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…...

Unity 3D 调整cube的颜色

1.选中Assets后,右键->Create->Material 2.调整Material的颜色,然后将Material拖到对应的cube上...

数字通信和fpga概述——杜勇版本学习笔记

1数字通信处理流程 脉冲调制是每个数字通信系统中间必不可少的环节,通常是使用升余弦滚降滤波器来实现。 超外差接收机原理是利用本地产生的振荡波与输入信号混频,将输入信号频率变换为某个预先确定的频率的方法。超外差原理最早是由E.H.阿姆斯特朗于1…...

17.复制字符串 ,包括\0

#include<stdio.h> #include <cstring>int main(){int len1,len2;char s1[44];char s2[33];scanf("%s",s1);scanf("%s",s2);len1strlen(s1)1;printf("先s1的字符长度为&#xff1a;%d\n",len1) ;strcpy(s1,s2) ;printf("复制字…...

C# List<T>.IndexOf()方法的使用

C#中的List<T>.IndexOf()方法用于查找指定元素在列表中的索引位置。它返回第一个匹配项的索引&#xff0c;如果未找到匹配项&#xff0c;则返回-1。 语法&#xff1a;有三种参数可选 int List<T>.IndexOf(T item); int List<T>.IndexOf(T item, int star…...

深入理解JVM虚拟机第十八篇:JVM种局部变量表结构的认识

大神链接:作者有幸结识技术大神孙哥为好友,获益匪浅。现在把孙哥视频分享给大家。 孙哥链接:孙哥个人主页 作者简介:一个颜值99分,只比孙哥差一点的程序员 本专栏简介:话不多说,让我们一起干翻JVM 本文章简介:话不多说,让我们讲清楚虚拟机栈存储结构和运行原理 文章目…...

zabbix监控安装-linux

zabbix6.4中文文档1. 简介 (zabbix.com) Zabbix 是一个企业级的开源分布式监控解决方案。 1.zabbix结构体系 Server&#xff1a; server 是存储所有配置、统计和操作数据的中央存储库。 Proxy&#xff1a; zabbix proxy可以代替 Zabbix server 收集性能和可用性数据。p…...

详解如何利用Cython为Python代码加速

代码我们在同文件夹下新建一个 update.pyx 文件&#xff0c;写入如下内容1234567891011121314151617181920212223242526272829303132333435import numpy as np cimport numpy as np cimport cythonDTYPE np.floatctypedef np.float_t DTYPE_tdef update_state(np.ndarray[DTYP…...

pdftotext:Python PDF文本提取的高效解决方案

pdftotext&#xff1a;Python PDF文本提取的高效解决方案 【免费下载链接】pdftotext Simple PDF text extraction 项目地址: https://gitcode.com/gh_mirrors/pd/pdftotext 在日常数据处理工作中&#xff0c;PDF文档的文本提取常常成为开发者的痛点。传统的复制粘贴方式…...

智能看板系统:基于事件驱动的自动化项目管理实践

1. 项目概述&#xff1a;一个能“感受”任务状态的智能看板 如果你和我一样&#xff0c;在团队协作或者个人项目管理中重度依赖看板工具&#xff0c;那你一定遇到过这样的痛点&#xff1a;看板上的卡片越来越多&#xff0c;状态更新全靠手动拖拽&#xff0c;时间一长&#xff0…...

LLaMA-Factory数据集格式详解与高质量数据构建方法-原理源码解析

1. 问题背景与分析目标 在大模型训练和应用中&#xff0c;数据集的格式和质量是决定模型性能的关键因素之一。LLaMA-Factory是一个用于企业级AI落地的框架&#xff0c;它简化了大模型的训练、微调和推理过程&#xff0c;特别是在处理企业知识库问答任务时。如何有效地准备和处理…...

权限不是配置,是计算——MCP 2026动态分配核心算法解析,含PDP策略决策树与PEP响应延迟压测数据(实测<12ms)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;权限不是配置&#xff0c;是计算——MCP 2026动态分配范式革命 在 MCP&#xff08;Multi-Context Permissioning&#xff09;2026 架构中&#xff0c;权限不再由静态策略文件或 RBAC 角色模板预定义&am…...

WaveDrom技术深度解析:JavaScript驱动的数字时序图渲染引擎架构与实践

WaveDrom技术深度解析&#xff1a;JavaScript驱动的数字时序图渲染引擎架构与实践 【免费下载链接】wavedrom :ocean: Digital timing diagram rendering engine 项目地址: https://gitcode.com/gh_mirrors/wa/wavedrom 项目核心价值定位&#xff1a;代码即设计的数字时…...

TensorFlow/Keras实现多头注意力机制的工程指南

1. 从零实现多头注意力机制的工程实践多头注意力机制&#xff08;Multi-Head Attention&#xff09;作为Transformer架构的核心组件&#xff0c;已经成为现代深度学习模型的标配。但大多数开发者只是调用现成的API&#xff0c;对其底层实现细节知之甚少。本文将带您用TensorFlo…...

AI沙箱不是加个--read-only就完事!资深架构师曝光4类伪隔离反模式及审计checklist

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Docker Sandbox 运行 AI 代码隔离技术 面试题汇总 Docker Sandbox 是当前 AI 工程化部署中保障安全执行的关键实践&#xff0c;尤其在模型即服务&#xff08;MaaS&#xff09;平台、在线编程评测系统及…...

Speech-AI-Forge:一站式语音AI集成开发与应用平台深度解析

1. 项目概述&#xff1a;一站式语音AI锻造工坊如果你正在寻找一个能让你快速上手、深度定制&#xff0c;并且集成了当前主流开源语音合成与识别模型的工具箱&#xff0c;那么Speech-AI-Forge就是你一直在等的那个“瑞士军刀”。这个项目本质上是一个围绕文本转语音&#xff08;…...

PPTX2HTML终极指南:3分钟实现PPTX到HTML的完美转换

PPTX2HTML终极指南&#xff1a;3分钟实现PPTX到HTML的完美转换 【免费下载链接】PPTX2HTML Convert pptx file to HTML by using pure javascript 项目地址: https://gitcode.com/gh_mirrors/pp/PPTX2HTML PPTX2HTML是一款革命性的前端转换工具&#xff0c;让您的演示文…...