SpringBoot 自动装配原理

【SpringBoot】SpringBoot自动装配原理详解 文章目录1.什么是SpringBoot?2.初步认识Spring Boot3.Spring Boot四大核心4.Enable\* 注解的作用5.深入分析Spring Boot中的自动装配5.1简单分析@Configuration5.2简单分析@ComponentScan5.3 Import注解方式一:直接填class数组方式二:ImportSelector方式【重点】方式三:ImportBeanDefinitionRegistrar方式5.4 深入分析EnableAutoConfiguration原理5.5 阅读详情

发现导入选择器

@Import(AutoConfigurationPackages.Registrar.class)

在这里插入图片描述

点进AutoConfigurationPackages类

//导入初始化的一些bean

static class Registrar implements ImportBeanDefinitionRegistrar, DeterminableImports {

//metadata 元数据

@Override

public void registerBeanDefinitions(AnnotationMetadata metadata,

BeanDefinitionRegistry registry) {

//PackageImport 导入元数据

register(registry, new PackageImport(metadata).getPackageName());

}

@Override

public Set determineImports(AnnotationMetadata metadata) {

return Collections.singleton(new PackageImport(metadata));

}

}

在这里插入图片描述

回到@EnableAutoConfiguration 注解

查看另一个注解 @Import(AutoConfigurationImportSelector.class) 自动配置导入选择

@Import(AutoConfigurationImportSelector.class)

点进AutoConfigurationImportSelector 看看

在这里插入图片描述

看到AutoConfigurationImportSelector 类中选择组件的方法

public String[] selectImports(AnnotationMetadata annotationMetadata)

选择组件:就是选择哪些我们配置的pom.xml中的东西

在这里插入图片描述

点进loadMetadata

在这里插入图片描述

来到 AutoConfigurationMetadataLoader类的方法

在这里插入图片描述

回到AutoConfigurationImportSelector类

  • 继续分析 selectImports 方法

  • getCandidateConfigurations 获取所有的配置

List configurations = getCandidateConfigurations(annotationMetadata,

attributes);

在这里插入图片描述

  • 核心方法

  • getCandidateConfigurations 获取候选的配置

  • loadFactoryNames 首先通过加载器加载所有的

protected List getCandidateConfigurations(AnnotationMetadata metadata,

AnnotationAttributes attributes) {

List configurations = SpringFactoriesLoader.loadFactoryNames(

getSpringFactoriesLoaderFactoryClass(), getBeanClassLoader());

Assert.notEmpty(configurations,

"No auto configuration classes found in META-INF/spring.factories. If you "

  • “are using a custom packaging, make sure that file is correct.”);

return configurations;

}

在这里插入图片描述

@SpringBootApplication 注解标注了 @EnableAutoConfiguration

在这里插入图片描述

说明一件事

@SpringBootApplication : 标注这个类是一个SpringBoot 的应用:启动类下的所有资源被导入

在这里插入图片描述

继续看getCandidateConfigurations 方法

  1. 这个配置不为空

  2. META-INF/spring.factories

  3. 自动配置的核心文件

在这里插入图片描述

查看spring.factories文件

在这里插入图片描述

spring.factories 文件内容

  1. Initializers 初始化的

  2. Application Listeners 监听的

  3. Auto Configuration Import Listeners 自动选择导入的包

  4. Auto Configuration Import Filters

  5. Auto Configure 自动配置

  6. Failure analyzers

  7. Template availability providers

在这里插入图片描述

查看spring.factories 文件中的WebMvcAutoConfiuration

在这里插入图片描述

WebMvcAutoConfiuration类

在这里插入图片描述

WebMvcProperties 类

在这里插入图片描述

spring.factories 文件从哪来?

&emspl先读了配置文件,才找到配置类

继续看getCandidateConfigurations 方法

点进去

在这里插入图片描述

来到springFactoriesLoader类

查看loadSpringFactories方法

在这里插入图片描述

loadSpringFactories方法 可以看到springboot 把所有的资源都加载到配置类中

Properties properties = PropertiesLoaderUtils.loadProperties(resource);

点击 FACTORIES_RESOURCE_LOCATION 常量

在这里插入图片描述

加载了spring.factories 文件的所有东西

在这里插入图片描述


[](()4结论:

  1. SpringBoot所有的自动配置都是在启动的时候扫描并加载;

  2. 所有的自动配置类都在这里面 spring.factories

  3. 但是不一定生效,要判断条件是否成立

  4. 只有导入了对应的start,就有对应的启动器了

  5. 有了启动器,我们自动装配就会生效,然后就配置成功了!

springboot自动装配原理详解 springboot自动装配原理详解 1)传统ssm整合redis的时候 需要在xml的配置文件中 进行大量的配置Bean 我们在这里使用springboot来代替ssm的整合,只是通过xml的形式来整合redis 第一步:加入配置 <dependency> <groupId>org.springframework.data</grou... 阅读详情

相关推荐

SpringBoot 自动装配原理详解

文件,将文件中配置的类型信息加载到 Spring 容器(此处涉及到 JVM 类加载机制与 Spring 的容器知识),并执行类中定义的各种操作。没有 Spring Boot 的情况下,如果我们需要引入第三方依赖,需要手动配置,非常麻烦。即使 Spring 后面引入了基于注解的配置,我们在开启某些 Spring 特性或者引入第三方依赖的时候,还是需要用 XML 或 Java 进行显式配置。但是,Spring Boot 项目,我们只需要添加相关依赖,无需配置,通过启动下面的。

2401_86844317的博客 1094

SpringBoot自动配置@EnableAutoConfiguration和@ImportAutoConfiguration的实现原理

【代码】SpringBoot自动配置@EnableAutoConfiguration和@ImportAutoConfiguration的实现原理。

JavaMyDream的博客 820

VisualStudio2022配置CGAL

vs2022和vs2017安装配置boost没什么区别,只需要注意boost的msvc得是14.3的,这玩意跟visualstudio版本挂钩的。压缩包解压,得到下面这两文件,然后把auxiliary这个文件挪到CGAL-5.6里面就行了。我用cgal读取一个stl模型,并输出相关信息(想可视化的话需要安装Qt,不想装Qt也可以装VTK)然后下载下面这两个压缩包。照着下面的截图填就完事了。

weixin_43850909的博客 1171

SpringBoot-自动配置-@Import注解与@EnableAutoConfiguration注解

SpringBoot-自动配置-@Import注解与@EnableAutoConfiguration注解

汤键的博客 2592

Python经常遇到导入xlwings就出错,如何解决

Python经常在导入xlwings时遇到错误。有人建议尝试重装或升级xlwings,但这些操作后仍然无法解决导入错误问题。

felix_8的博客 1740

基于SSM的足浴管理系统(源码+开题)

研究内容: 本研究的内容主要包括以下几个方面:首先,我们需要对现有的足浴管理系统进行深入的研究和分析,了解其优缺点;最后,我们需要对新设计的系统进行评估和优化,以满足用户的需求和提升系统的使用体验。因此,开发一种基于SSM的足浴管理系统,能够有效地解决这些问题,提高足浴服务的质量和效率。研究目的: 本研究的主要目的是设计和实现一个功能完善、操作简便、用户体验良好的基于SSM的足浴管理系统。通过对系统的研究和设计,我们希望能够为足浴服务行业提供一个高效、便捷的工具,从而推动足浴服务行业的发展。

林科程序设计 1684

超详细解析Spring Boot自动装配原理

最重要的包Spring Boot默认会在底层配好所有的组件。但是如果用户自己配置了以用户的优先在项目启动的时候,Spring Boot框架会自动读取配置文件中所配置的配置类,然后将其中所定义的bean根据条件注解所指定的条件来决定是否需要将其导入到Spring容器中。在Spring Boot项目中有一个注解其中是实现自动化配置的核心注解。该注解通过@Import注解导入AutoConfigurationImportSelector,这个类实现了一个导入器接口。

wdj_yyds的博客 3566

费斯托SPAN压力传感器的调试

本体为压力传感器,检测气压大小,通过设置参数,在上电上气时对气压进行判断,进而通过自身逻辑的判断,控制传感器的通断,进而控制机械部位的工作与运行;通电之后为如下图所示的样子有三个按键ABEdit键(编辑键、确认键)两步即可轻松连接。

大小曲奇的博客 1万+

SpringBoot自动装配流程

SpringBoot自动装配流程

weixin_51456741的博客 319

RTL8306交换机芯片与FPGA联调实战:5个网口+1个MAC的配置避坑指南

本文详细解析了RTL8306交换机芯片与FPGA联调中的关键技术难点,特别是MAC5寄存器的配置陷阱和PHY页切换机制。通过实战案例和优化策略,帮助开发者高效配置5个网口+1个MAC的工业级网络设备,提升系统稳定性和实时性。

vodka的博客 1096

基于YOLOv11的建筑图纸物体检测系统设计与实现

包含多种建筑平面图,标注了墙体、门窗等元素:CAD格式的建筑图纸数据集:专门针对建筑元素的标注数据集自定义数据集:使用LabelImg等工具自行标注的建筑图纸本文以FloorPlanDataset为基础,结合部分自定义标注数据构建混合数据集。wall (墙体)door (门)window (窗)stair (楼梯)furniture (家具)text (文字标注)dimension (尺寸标注)column (柱子)

YOLO 536

SpringBoot自动装配 @Import

SpringBoot自动装配原理,@Import 使用

clonetx的博客 1161

YOLO模型从10MB瘦到2MB!剪枝+INT8量化双方案(精度损失<1%,附部署代码)

摘要:本文介绍了一种针对边缘设备的YOLO模型轻量化方案,通过"结构化剪枝+INT8量化"组合技术,将YOLOv8n模型从6.4MB压缩至2MB,体积减少68.75%,推理速度提升80%,同时保持精度损失小于1%。文章详细讲解了剪枝工具选择、通道剪枝实现、量化校准等关键步骤,并提供了完整的代码示例。特别强调了剪枝保留率、校准集使用、微调必要性等实践要点,帮助开发者在树莓派等资源受限设备上实现高效目标检测。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 756

Spring Boot自动装配原理(易懂)

熟练使用Spring Boot那么自动装配原理的掌握是必不可少的

总结分享 4万+

Win11 系统下 VisualStudio2022 配置点云库 PCL1.11.1

安装完成之后打开文件夹E:\PCL 1.11.1\3rdParty\OpenNI2双击 并选择路径 (E:\PCL 1.11.1\3rdParty\OpenNI2) 安装即可全部安装完成之后,将pcl-1.11.1-pdb-msvc2019-win64.zip解压后的 .pdb文件拷贝到(E:\PCL 1.11.1\bin)中设置环境变量:到此,环境变量配置完成。

qq_53545309的博客 1126

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Spring Boot的自动装配原理

自动装配是springboot的核心,一般提到自动装配就会和springboot联系在一起。实际上SpringFramework早就实现了这个功能。SpringBoot只是在其基础上,通过SPI的方式,做了进一步优化。SpringBoot定义了一套接口规范,这套规范规定SpringBoot在启动时会扫描外部引用jar包中的文件,将文件中配置的类型信息加载到Spring容器(此处涉及到JVM类加载机制与Spring的容器知识),并执行类中定义的各种操作。...

YING—country的博客 3万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

springboot自动装配原理

springboot自动装配原理

qq_24078621的博客 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

SpringBoot自动装配原理

到这里我们就可以知道当一个springboot启动类加载的时候,会根据@EnableAutoConfiguration注解找到项目依赖库中对应的需要开启自动装配的配置文件实现自动装配,这其中使用了spring的SPI机制,全名是service provide interface 服务提供接口,spring的这一机制可以然我们不局限于单独的接口进行服务实现,可以借助类或者注解。可以看到对应的key-value结构,注解以及对应的文件我们找到这个配置文件可以看到以下配置。

qq_52747920的博客 1083

【SpringBoot】深入剖析 Spring Boot 自动装配原理(附源码与实战)

Bean而在 Spring Boot 中,这些 Bean可以不写,Spring Boot 会自动装配合适的 Bean。例如,添加依赖后,Spring Boot 会自动配置DataSource但我们从未在代码中显式定义它!假设我们希望 Spring Boot在项目启动时自动装配一个自定义的 HelloService,而无需手动配置 Bean,我们可以按照以下步骤实现。如果不想让某些自动配置生效,可以使用exclude或者在Spring Boot 通过和加载中的自动配置类。自动配置类使用。

工一木子 1411

SpringBoot之自动装配原理

Springboot自动装配原理 springboot自动装配 springboo最核心的东西就是自动装配原理,那么自动装装配原理是什么呢?自动装配原理其实就是对strat提供好的xxxAutoConfiguration、配置文件进行读取,当读取完后就配置好这些类。 详说springboot自动装配 ​ 进入项目后,我们发现springboot为开发者提供了一个类,类里有个run方法,看上去很简单没什么东西需要了解,但是细心的你会发现这个类上有个注解@SpringBootApplication,这个注解

qq_41343166的博客 8037

springboot 自动装配_Spring Boot自动装配原理分析

阅读本文约需要10分钟大家好,我是你们的导师,经常看我朋友圈的同学应该知道,我每天会在微信上给大家免费提供以下服务!1、长期为你提供最优质的学习资源!2、给你解决技术问题!3、每天在朋友圈里分享优质的技术文章!4、每周1、3、5送纸质书籍免费送给大家,每年至少送书800本书!5、为大家推荐靠谱的就业单位!请注意!我上面说的5点全部都是免费的!全网你应该找不到第二家吧!当然,大家...

weixin_39984442的博客 166

Springboot自动装配原理

Spring Boot 的自动装配机制大大简化了应用配置的工作,它通过条件注解和大量的默认配置,帮助开发者自动配置常见的功能(如数据源、Web 服务器等)。通过理解自动装配的原理,开发者可以更加灵活地定制自己的应用配置,同时也可以在需要时禁用某些自动装配功能。

sunyingboaini的博客 1085

Springboot自动装配的原理

第三方jar包,SpringBoot会采用SPI机制,在/META-INF/目录下增加spring.factories文件,然后SpringBoot会自动根据约定,自动使用SpringFactoriesLoader来加载配置文件中的内容。这种自动装配的思想在spring3.x以后就支持了,我们只需要在类上添加一个叫做@Enable的注解就可以了,只是spring没有向SpringBoot这样全面去设计,这样设计的好处,在于大幅度减少了臃肿的配置文件,而各模块之间的依赖,也深度的解耦,...

blanceage的博客 1万+

SpringBoot自动装配原理详解

SpringBoot 自动装配原理超详细解答

m0_51431003的博客 6729

【原理分析】细说SpringBoot的自动装配原理

1.什么是SpringBoot?   对于spring框架,我们接触得比较多的应该是spring mvc、和spring。而spring的核心在于IOC(控制反转对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系)和DI(依赖注入IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了

波波烤鸭的博客 14万+
上一篇: spring-cloud-kubernetes与SpringCloud Gateway
下一篇: SpringBoot-2
java100001
博客等级 码龄5年 4粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值