Spring Boot自动配置原理、实战、手撕自动装配源码

Spring Boot自动配置原理

相比较于传统的 Spring 应用,搭建一个 SpringBoot 应用,我们只需要引入一个注解 @SpringBootApplication,就可以成功运行。

前面四个不用说,是定义一个注解所必须的,关键就在于后面三个注解:@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan。也就是说我们如果不用 @SpringBootApplication 这个复合注解,而是直接使用最下面这三个注解,也能启动一个 SpringBoot 应用。

前面四个不用说,是定义一个注解所必须的,关键就在于后面三个注解:@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan。也就是说我们如果不用 @SpringBootApplication 这个复合注解,而是直接使用最下面这三个注解,也能启动一个 SpringBoot 应用,其中,Spring Boot的自动配置注解是@EnableAutoConfiguration。

其中,Spring Boot的自动配置最最核心的注解是@EnableAutoConfiguration,

@SpringBootConfiguration 注解


这个注解我们点进去就可以发现,它实际上就是一个 @Configuration 注解,这个注解大家应该很熟悉了,加上这个注解就是为了让当前类作为一个配置类交由 Spring 的 IOC 容器进行管理,因为前面我们说了,SpringBoot 本质上还是 Spring,所以原属于 Spring 的注解 @Configuration 在 SpringBoot 中也可以直接应用。

@ComponentScan 注解


@ComponentScan这个注解也很熟悉,用于定义 Spring 的扫描路径,等价于在 xml 文件中配置 context:component-scan,假如不配置扫描路径,那么 Spring 就会默认扫描当前类所在的包及其子包中的所有标注了 @Component,@Service,@Controller 等注解的类。

通过查看源码可以知道,@ComponentScan使用了@Repeatable(ComponentScans.class)注解,@ComponentScans是聚合多个ComponentScan注解的容器注解,它使ComponentScan注解可以在同一个类或方法上多次使用,@Repeatable注解的例子如下:

@EnableAutoConfiguration注解

这个注解才是实现自动装配的关键,点进去之后发现,它是一个由 @AutoConfigurationPackage 和 @Import 注解组成的复合注解

@Import的类可以找到下面自动加载自动配置的映射。

写了一半用空补补

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/136018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv8教程系列:五、关闭数据增强

YOLOv8教程系列:五、关闭数据增强 在一些特殊情况下,特别是在计算机视觉任务中,如目标检测,图像的颜色扰动可能会对算法的性能和稳定性产生重要影响。在这些情况下,我们可能需要采取一些措施来关闭部分或全部的数据增…

JAVA IDEA 下载

超简单步骤一: IntelliJ IDEA 官方下载链接 点击以上链接进入下图,点击下载 继续点下载,然后等待下载完后打开安装包即可 步骤二: 打开下好的安装包,点击Browse...我们把它下载到自己喜欢的地方(主要是别占…

多语言翻译软件 Mate Translate mac中文版特色功能

Mate Translate for Mac是一款多语言翻译软件,Mate Translate mac可以帮你翻译超过100种语言的单词和短语,使用文本到语音转换,并浏览历史上已经完成的翻译。你还可以使用Control S在弹出窗口中快速交换语言。 Mate Translate Mac版特色功能…

C++指针访问数组 函数中用指针传参

用指针访问数组 在函数中用指针传参

Centos批量删除系统重复进程

原创作者:运维工程师 谢晋 Centos批量删除系统重复进程 客户一台CENTOS 7系统负载高,top查看有很多sh的进程,输入命令top -c查看可以看到对应的进程命令是/bin/bash     经分析后发现是因为该脚本执行时间太长,导致后续执…

【pytorch源码分析--torch执行流程与编译原理】

背景 解读torch源码方便算子开发方便后续做torch 模型性能开发 基本介绍 代码库 https://github.com/pytorch/pytorch 模块介绍 aten: A Tensor Library的缩写。与Tensor相关的内容都放在这个目录下。如Tensor的定义、存储、Tensor间的操作(即算子/OP&#xff…

Maven简介

一、Maven模型 二、模型实现 三、对应代码项目介绍

MySQL开启远程访问权限

默认情况下,MySQL只允许本地登录,即只能在安装MySQL环境所在的主机下访问。但是在日常开发和使用中,我们经常需要访问远端服务器的数据库,此时就需要开启服务器端MySQL的远程连接权限。1、生成环境,连接MySQL 2、查看M…

直面LED Driver测试挑战,助力显示屏行业变中求变!

杭州亚运会开幕式惊艳世界,引发社会各界一致赞誉!在大气浪漫的舞台效果中,LED屏、裸眼3D屏凭借“硬核科技”出圈,为大家带来科技、活力、诗意的“中国式浪漫”观赏体验。而这美轮美奂的LED呈现效果背后,主要依靠的是LE…

Geotrust的企业型通配符SSL证书申请

Geotrust作为世界知名的CA认证机构之一,颁发了各种SSL证书,其签发的数字证书被广泛应用于电子商务、企业间通信、网络安全等领域,SSL数字证书可以验证网络中用户的身份,确保数据的机密性和完整性。今天随SSL盾小编了解如何申请Geo…

载波通讯电表的使用年限是多久?

随着科技的飞速发展,智能家居、物联网等概念逐渐深入人心,载波通讯电表作为一种新型的智能电表,凭借其低功耗、高可靠性、远程通讯等优点,广泛应用于居民用电、工业生产等领域。那么,载波通讯电表的使用年限是多久呢&a…

怎么经营朋友圈?

朋友圈就是现代人的社交场,朋友圈发布的好坏会直接影响你的人际关系。怎么经营朋友圈?这个问题大部分人都不太知道,今天我们就来说说。 一、常见朋友圈: 1、广告型朋友圈 现在的朋友见到的,大部分都是每天发十多条的…

Spring笔记(四)(黑马)(web层解决方案-SpringMVC)

01、Spring MVC 简介 1.1 SpringMVC概述 SpringMVC是一个基于Spring开发的MVC轻量级框架,Spring3.0后发布的组件,SpringMVC和Spring可以无 缝整合,使用DispatcherServlet作为前端控制器,且内部提供了处理器映射器、处理器适配器…

【亚马逊云科技产品测评】活动征文|AWS Linux配置node环境并部署Vue项目

前言 在数字化时代,AWS云服务扮演着至关重要的角色。AWS(Amazon Web Services)是亚马逊公司旗下的云计算服务平台,为全球各地的企业、组织和个人开发者提供了一系列广泛而深入的云服务。 在AWS云服务中,计算、存储、数…

5G毫米波通信中的关键技术

随着5G技术的快速发展,毫米波通信作为其中的一项重要技术,在高速数据传输、低延迟通信和大规模连接等方面具有显著的优势。本文将探讨5G毫米波通信中的关键技术,包括毫米波频段的选择、信号处理技术和MIMO技术等。 一、毫米波频段的选择 毫米…

什么是数据可视化,为什么数据可视化很重要?

数据可视化是数据的图形表示,可以帮助人们更轻松地理解和解释复杂的信息。它涉及创建数据的视觉表示,例如图表、图形、地图和其他视觉元素,以传达数据中的见解、模式和趋势。数据可视化是将原始数据转化为可操作知识的关键工具。 以下是数据…

jacoco和sonar

目录 jacoco 引入依赖 构建配置修改 单元测试 生成报告 查看报告 报告说明 1. Instructions 2. Branches 3. Cyclomatic Complexity 4. Lines 5. Methods 6. Classes sonar7.7 基础环境 需要下载软件 解压文件并配置 运行启动 jacoco 引入依赖 <dep…

C语言 做一个学生信息管理系统

#include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct person {char name[30];char sex[10];int num;struct person *next; }stu; stu *head NULL; void printf_link(stu *head) {stu *pd head;while(pd ! NULL){printf("姓名&a…

提升绘图效率不再难,看看这8款AI流程图软件,一键快速生成流程图!

流程图是表示流程、系统和思想的重要视觉辅助工具。在当今数字时代&#xff0c;AI技术的出现已经彻底改变了制作流程图的方式。 在本文中&#xff0c;我们将与各位分享8款好用的AI流程图软件&#xff0c;借助每款软件内置的AI能力&#xff0c;可以快速绘制出一份完整的流程图&…

11月11日|欢迎参加Sui Meetup泰国活动!

现在是Sui基金会与泰国Sui社区见面的时候啦&#xff0c;我们诚邀每个人参加今年最大的Sui Meetup泰国活动&#xff0c;主题是“Summer Paradise&#xff08;夏日天堂&#xff09;”。在活动中&#xff0c;您将会见到来自Sui基金会、ContributionDAO、KX、Inspex、Cryptomind、A…