SpringBoot——SpringBoot自动配置原理(2-2-5版本)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

SpringBoot 自动配置原理

​ 作为 SpringBoot 的精髓,自动配置是“习惯优于配置”理念的体现,了解 SpringBoot 自动配置的原理也是学习 SpringBoot 过程中不可绕开的重要内容

从启动类开始说起

​ 要了解自动配置原理,我们首先要找到自动配置的入口,或者说是开关,学习过 SpringBoot 的同学都知道,当我们新建一个 SpringBoot 项目时,而这个空项目一定会包含一个xxxxxxxxAutoconfigApplication.java的类,这是 SpringBoot 的启动类,而这个类一定存在@SpringBootApplication这个注解,那似乎就说明了这个注解和自动配置一定存在某些关系
在这里插入图片描述
​ 我们ctrl + 左键进入这个注解,会发现这是一个复合注解,一个很明显的名字@EnableAutoConfiguration启用自动配置就在其中,那很明显了,这个注解就是我们自动配置的开关所在,我们再进入这个注解
在这里插入图片描述
​ 随后我们会发现,@EnableAutoConfiguration是一个很简单的配置类,我们可以看到它存在一个@Import(AutoConfigurationImportSelector.class)注解,在使用注解配置 Spring 时,我们知道@Import注解是用来定义子配置文件的,并且从它导入的子配置类的名称(自动配置导入选择器)我们可以确定,有关自动配置的核心代码就在这个子配置类中

​ 通过查看这个类我们可以发现,SpringBoot 在selectImports方法中,通过调用同类下的getAutoConfigurationEntry方法来获取所谓的自动配置条目,那我们就继续来看一下这个方法
在这里插入图片描述
​ 这个方法中,我们可以注意到有一个configurations的变量,很明显,这是一个包含了配置的集合,这样我们就又找到了一个getCandidateConfigurations(得到候选的配置)方法,而在这个方法中,SpringBoot 又调用了SpringFactoriesLoader.loadFactoryNames,看起来我们离最最核心的代码越来越近了!点它!
在这里插入图片描述
​ 这时我们来到了SpringFactoriesLoader.java,在这个类中我们找到了loadFactoryNames方法,发现它关联了loadSpringFactories方法,这个方法中又一大坨代码
在这里插入图片描述
​ 我们可以看到,在loadSpringFactories这个方法中,SpringBoot 从FACTORIES_RESOURCE_LOCATION中获取值,通过获取到的值,将其中所有的条目都放入配置中,我们看一下这个值是个什么东西
在这里插入图片描述
​ 终于一坨一坨的代码变成了一个字符串,原来,SpringBoot 是从具有"META-INF/spring.factories"目录的 jar 包下获取自动配置资源的,我们找到spring-boot-auto-configure这个 jar 包,就会在它的目录下找到一个上述的路径,并找到spring.factories文件
在这里插入图片描述
​ 从上边的图片可以看到,这个文件中包含了很多什么什么自动配置类,原来,SpringBoot 把很多常用配置都已经编写成自动配置类,在启动项目时,SpringBoot 会通过扫描这个配置文件,获取到所有的自动配置类并加载到 Spring 容器中供我们使用

​ 那么自动配置类是如何被使用的呢?今天有点困了,下一篇再更!

SpringBoot_配置文件及自动配置原理2.2.5 version) 文章目录二、配置文件1. 配置文件2. YAML语法:1. 基本语法2. 值的写法字面量:普通的值(数字,字符串,布尔)对象、Map(属性和值)(键值对):数组(List、Set):3. 配置文件值注入1. properties文件中文乱码2. @Value获取值和@ConfigurationProperties获取值比较3. 配置文件注入值数据校验4. @PropertySource&@... 阅读详情

相关推荐

SpringBoot2.1.5快速整合Mybatis和Druid数据源

在我们的日常开发中,数据库操作最多的就是通过Mybatis做ORM框架,Druid做数据源连接工具。之前在工作中,实际使用SpringBoot开发的场景并不是很多,以至于在这方面的整合没有积累经验。鉴于最近自己的项目需要支持SpringBoot,故借此机会,将这两个框架和SpringBoot做一个快速整合。 废话不多说,开始上代码~ 1. 操作步骤 1.1 环境准备 Spring Boot版本...

xueqi's blog 1764

一、SpringBoot2基础入门--07-SpringBoot自动配置原理

07-SpringBoot自动配置原理入门1、自动配置原理入门1.1、引导加载自动配置类3.1.1、@SpringBootConfiguration3.1.2、@ComponentScan3.1.2、@EnableAutoConfiguration3.2、按需开启自动配置项3.3、修改默认配置3.4、最佳实践4、开发小技巧4.1、Lombok--简化JavaBean开发4.2、dev-tools4.3、Spring Initailizr(项目初始化向导) 1、自动配置原理入门 1.1、引导加载自动配置类 S

qq_46112274的博客 232

Springboot02_自动配置原理

文章目录①. 容器功能1. 组件添加- **`①. @Configuration`**- **`②. @Bean、@Component、@Controller、@Service、@Repository`**- **`③. @Conditional`**2. 原生配置文件引入- **`①. @ImportResource`**3. 配置绑定- **`①. @Component+@ConfigurationProperties`**- **`②. @EnableConfigurationProperties +

weixin_42460596的博客 596

SpringBoot2自动配置原理

基于SpringBoot2自动配置原理(详解) SpringBoot是基于SSM框架为基础的,内部主要是整合了SpringSpringMVC,避免我们以前写SSM框架时,在xml中写入了大量的配置;而在SpringBoot中,都自动配置了哪些: 自动配置了web服务器:如tomcat 自动starter依赖,简化构建配置 自动配置Spring以及第三方功能 … 不过SpringBoot自动配置了这么多的东西,都离不开它的独有的特点!!! 一、SpringBoot的特点 1、依赖管理 父项目做依赖

maogenb的博客 763

Spring Boot面试必问:自动配置原理

Spring Boot自动配置原理 在传统的SSM框架集成中,需要编写大量的XML配置文件,比如集成Mybatis时,需要编写mybatis_config.xml文件,在集成springmvc时,需要编写springmvc.xml文件,这些配置文件十分繁琐,还很容易出现错误,导致开发效率低。而Spring Boot采用约定大于配置的思想,将大量的spring配置文件集成到Spring Boot的内部,帮助开发人员自动配置各类XML文件,极大的简化了开发过程。 步骤一:自动配置原理 Spring Boot自动

weixin_42556307的博客 2万+

springboot 2.x自动配置原理简单分析

PS:本文使用的是springboot 2.13版本,根据版本不同,内容可能有点出入,请注意 1、什么是自动配置? 在学习SSM开发项目时,我们需要自己引入springspringMVC以及mybatis的依赖,并且需要使用配置文件或者java config来进行配置,比如配置视图解析器等等组件。但springboot 为我们提供了一种便利的开发方式:自动配置,我们只需要引入特定的start...

adminit的博客 3206

自学笔记记录:Spring Boot 2.5.0源码学习【2自动配置原理

自学笔记记录:Spring Boot 2.5.0源码学习【自动配置原理】 一、Spring Boot自动配置原理 @SpringBootApplication public class SpringbootLearningApplication { public static void main(String[] args) { // 1、返回我们的 IOC 容器,整个应用一启动就会给我们返回应用内的容器 ConfigurableApplicationContext

weixin_43197640的博客 384

SpringBoot 自动配置数据源原理

SpringBoot 自动配置数据源原理 Spring Boot 2.0 默认使用 com.zaxxer.hikari.HikariDataSource 数据源 Spring Boot 1.5 默认使用 org.apache.tomcat.jdbc.pool.DataSource 作为数据源; DataSourceConfiguration 源代码 // // Source code recr...

. 2368

Spring Boot自动配置原理—简单源码分析

文章目录引言环境准备Spring Boot 2.x 原理分析@SpringBootApplication:@SpringBootConfiguration@EnableAutoConfiguration@AutoConfigurationPackage@Import(AutoConfigurationImportSelector.class)Spring Boot 1.5.x 分析总结 引言 众所...

Frank的博客 513

知识储备:基于SpringBoot 2.0.5解析Servlet容器自动配置及容器启动原理

1.Servlet容器自动配置原理 1.知道SpringBoot自动配置原理的都知道(有不了解的可以查看https://blog.csdn.net/qq_36625757/article/details/83929287这篇博客),SpringBoot在启应用动时都会加载各个jar包下的META-INF/spring.factories文件,读取其中的org.springframework.bo...

qq_36625757的博客 2052

SpringBoot底层原理——自动装配

2.1、引导加载自动配置类 MainApplication:启动类 @SpringBootApplication public class MainApplication @SpringBootApplication:是一个合成组件 @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExclud

minamisama的博客 354

学习springboot2的第5天(2021-12-04)13-自动配置【源码分析】自动包规则原理

学习springboot2的第5天(2021-12-04)13-自动配置【源码分析】自动包规则原理springboot自动配置原理的入门】 springboot到底是怎么神不知鬼不觉地帮我们做了很多事情。只让我们关注业务逻辑的开发。带着这个问题开始学习。 【核心注解】: @SpringBootApplication 这个注解一般是在启动程序类的类体上。 其中@SpringBootApplication这个注解等同于:下面三个注解(1=3) 1、@SpringBootConfiguration 2、@C

有上进心的阿龙 388

SpringBoot2.0---------------5SpringBoot自动配置原理

3)第三个合成注解:@EnableAutoConfiguration注解,该注解本身也是一个合成注解@AutoConfigurationPackage+@Import。● 每个自动配置类按照条件进行生效,默认都会绑定配置文件指定的值。@Configuration注解:表示当前是一个配置类,即@SpringBootApplication注解也表示当前的类也可以作为一个配置类。2)第二个合成注解:@ComponentScan注解功能为包扫描,指定扫描路径,即将那些路径中的组件添加到容器中。...

lyy_sss的博客 220

springboot自动配置原理 浅析

springboot自动配置原理 浅析 springboot版本2.5.5 注解@SpringBootApplication的源码: @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan( excludeFilters = {@Filter( t

sehnsucht 171

SpringBoot自动配置原理,以及如何编写自定义的starter

ImportSelector是一个接口,该接口提供了一个selectImports方法,用来返回全类名数组;可以通过这种方式,动态导入N个bean创建普通类kotlin复制代码} ​ }typescript复制代码} ​ }实现ImportSelector接口typescript复制代码} ​ }创建一个配置类,导入实现了ImportSelector接口的类less复制代码} } }控制台输出结果简介。

m0_71777195的博客 338

【深入浅出Spring原理及实战】「技术原理Spring Security的核心功能和加载运行流程的原理分析

Spring Security对认证、授权和常见漏洞保护提供了全方位支持。使用的版本为:Spring Security 5.5.2。注册标准Filter:首先,Spring 会自动注入一个DelegatingFilterProxy到 Servlet 的FilterChain中。

世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。 4864

springboot自动装配原理笔记一

思维导图 大纲,太长放不了截图。 从启动类的@SpringBootApplication注解开始,探究其自动装配的原理 结论 整合javaEE,解决方案和自动装配的东西都在spring-boot-autoconfigure-2.5.4.jar这个包下。 自动装配依赖spring-boot-autoconfigure-2.5.4.jar下META-INF/spring.factories文件。 springboot启动时根据spring.factories里自动配置类全类名找到对应的自动配置类。 若配置类

JieZhongBa的博客 196

一篇文章弄懂SpringBoot的自动装配原理

也就是路径下的所有META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件其中的某个的路径(是的,这个文件有很多,比如Mybatis-Plus有,SpringBoot本身自己也有)。遍历完所有的自动配置资源文件,也就把所有自动配置资源文件下的所有包含的类的全限定名加入到了自动配置项中,后续逐层返回给。返回要导入的全限定类名数组中的类主动注册为Bean,从而完成整个自动配置的流程。

weixin_74308571的博客 715

超级详细!!!SpringBoot2核心技术与响应式编程尚硅谷完整知识点笔记 下篇 自动配置、容器、Web、数据响应、拦截器、SQL、NOSQL、原理、Junit5、Actuator、外部化配置等

06、数据访问 1、SQL 1、数据源的自动配置-HikariDataSource 1、导入JDBC场景 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId> </dependency> ..

weixin_45203539的博客 990
上一篇: 算法——简单理解并查集
下一篇: 剑指Offer(面试题6-1)——从尾到头打印链表
scfor333
博客等级 码龄9年 35粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值