SpringBoot 自动配置的原理|学习笔记

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 快速学习 SpringBoot 自动配置的原理

开发者学堂课程【SpringBoot 实战教程 SpringBoot 自动配置的原理】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/651/detail/10777


SpringBoot 自动配置的原理


1、既然 springboot 可以根据 pom 中依赖的 jar 包进行自动配置那说明在项目启动时已经进行了配置而项目启动的入口就是 main 方法使用的是 springapplication.run 方法进行启动源码在 springapplication 里面找

2、当项目启动时它首先执行的初始化方法叫 initialize这个方法里面调用 setinitializers这个方法里面调用了 getspringfactoriesinstances这个方法调用 loadfactorynames,( FACTORIES RESOURCE LOCATION) 这是符号常量在当前类中找一下它代表的是"META- INF/spring. Factories"找一下这个文件在依赖下这个是 spring 自动配置的 jar 包有个 meta-inf下面有一个 spring. Factories也就是首先它加载 META- INF/spring. Factories 这个文件

image.png

3、spring. Factories 这个文件里面又很多auto configiuration 自动配置boot configiuration 包名,autoconfigiurationimportfilter 类名后面是\。有 aop 的都是实现自动配置所实现的包和类名再比如 redis.redisautoconfigiuration它去读取文件就知道每一个需要自动配置所对应配置类的包和类名再看源码它加载 getsystemreources 文件实际上对每一个进行实例化 createspringfactoriesinstances也就是它要根据配置文件中的类进行实例化因为它要自动配置这里是每一项对应的自动配置的 class所以它要找到这些配置进行实例化

4、比如程序里面整合 redisspringboot 要对 redis 进行自动配置找到包再找 到 class把这个 class 进行实例化就是创建对象

image.png

5、它用了一个注解叫 @conditionlonclass需要满足在当前环境下存在 jedisconnection.class 和 redisoperations.class 以及 jedis.class 三个类才会对 redisautoconfiguration 的 class 进行实例化实例化的同时就可以进行自动化的配置需要指定端口号在哪个数据库里存这里面有一个成员 redisproperties这里面就是 redis 的默认配置有哪个数据存到数据库里面url 和 host有的是有默认值连接 redis 的密码连接 redis 的端口号默认是6379。

image.png

6、如果没有在 application 全局配置文件中进行配置redis 采用的都是默认配置,ConfigurationProperties 是类型安全的配置如果在 application 全局配置中配置了它就会在全局配置文件中读取以 spring.redis 开头的就把自定义配置覆盖默认配置否则用的就是默认的配置这个就是 springboot 自动配置的原理就是它读取 spring.factories 文件根据文件找到这些类进行实例化根据类中的属性默认使用的都有默认值

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
3天前
|
XML Java 开发者
Spring Boot开箱即用可插拔实现过程演练与原理剖析
【11月更文挑战第20天】Spring Boot是一个基于Spring框架的项目,其设计目的是简化Spring应用的初始搭建以及开发过程。Spring Boot通过提供约定优于配置的理念,减少了大量的XML配置和手动设置,使得开发者能够更专注于业务逻辑的实现。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,为开发者提供一个全面的理解。
10 0
|
4天前
|
Java 开发者 微服务
手写模拟Spring Boot自动配置功能
【11月更文挑战第19天】随着微服务架构的兴起,Spring Boot作为一种快速开发框架,因其简化了Spring应用的初始搭建和开发过程,受到了广大开发者的青睐。自动配置作为Spring Boot的核心特性之一,大大减少了手动配置的工作量,提高了开发效率。
19 0
|
1月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
42 4
|
1月前
|
Java 数据库连接 Maven
springBoot:项目建立&配置修改&yaml的使用&resource 文件夹(二)
本文档介绍了如何创建一个基于Maven的项目,并配置阿里云仓库、数据库连接、端口号、自定义启动横幅及多环境配置等。同时,详细说明了如何使用YAML格式进行配置,以及如何处理静态资源和模板文件。文档还涵盖了Spring Boot项目的`application.properties`和`application.yaml`文件的配置方法,包括设置数据库驱动、URL、用户名、密码等关键信息,以及如何通过配置文件管理不同环境下的应用设置。
|
28天前
|
Java API 数据库
Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐
本文通过在线图书管理系统案例,详细介绍如何使用Spring Boot构建RESTful API。从项目基础环境搭建、实体类与数据访问层定义,到业务逻辑实现和控制器编写,逐步展示了Spring Boot的简洁配置和强大功能。最后,通过Postman测试API,并介绍了如何添加安全性和异常处理,确保API的稳定性和安全性。
35 0
|
8天前
|
缓存 IDE Java
SpringBoot入门(7)- 配置热部署devtools工具
SpringBoot入门(7)- 配置热部署devtools工具
19 2
 SpringBoot入门(7)- 配置热部署devtools工具
|
7天前
|
Java Spring
SpringBoot自动装配的原理
在Spring Boot项目中,启动引导类通常使用`@SpringBootApplication`注解。该注解集成了`@SpringBootConfiguration`、`@ComponentScan`和`@EnableAutoConfiguration`三个注解,分别用于标记配置类、开启组件扫描和启用自动配置。
42 17
|
7天前
|
Java 数据库连接
SpringBoot配置多数据源实战
第四届光学与机器视觉国际学术会议(ICOMV 2025) 2025 4th International Conference on Optics and Machine Vision
33 8
|
4天前
|
Java 数据库连接 数据库
springboot启动配置文件-bootstrap.yml常用基本配置
以上是一些常用的基本配置项,在实际应用中可能会根据需求有所变化。通过合理配置 `bootstrap.yml`文件,可以确保应用程序在启动阶段加载正确的配置,并顺利启动运行。
11 2