springBoot-自动配置原理

以下笔记内容, 整理自B站黑马springBoot视频,抖音Holis

1、自动配置原理

1.收集Spring开发者的编程习惯,整理开发过程使用的常用技术列表一>(技术集A)

2.收集常用技术(技术集A)的使用参数,整理开发过程中每个技术的常用设置列表一>(设置集B)

3.初始化SpringBoot基础环境,加载用户自定义的bean和导入的其他坐标,形成初始化环境

4.将技术集A包含的所有技术都定义出来,在Spring/SpringBoot启动时默认全部加载

5.将技术集A中具有使用条件的技术约定出来,设置成按条件加载,由开发者决定是否使用该技术(与初始化环境比对)

6.将设置集B作为默认配置加载(约定大于配置 ),减少开发者配置工作量

7.开放设置集B的配置覆盖接口,由开发者根据自身需要决定是否覆盖默认配置

2、springBoot自动配置原理详细说明

2.1springBoot的启动入口

java 复制代码
// 声明Spring Boot应用的主类,springBoot从这里启动
@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        // 启动Spring Boot应用, 返回IOC容器
        ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
        

springBoot从这个主程序去启动,主要是@SpringBootApplication ,点进去发现这是一个复合注解, 包含了 @EnableAutoConfiguration , springBoot正是通过这个@EnableAutoConfiguration来实现自动配置的。

EnableAutoConfiguration注解的源码:下面是

注意看, 这个EnableAutoConfigurationImportSelector就是自动配置的关键类了,

该类通过 SpringFactoriesLoader.loadFactoryNames()读取了ClassPath下面的META-INF/spring.factories (关键文件)文件。

spring.factories

spring.factories对应 1、自动配置原理中的技术集A , 它里边的各种AutoConfiguration对应 技术集B ,

用org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration举个例子,

我们在主程序中遍历输出 ioc容器帮我们加载了什么

// 启动Spring Boot应用, 返回IOC容器

ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);

String[] names = run.getBeanDefinitionNames();

for(String name: names){

System.out.println(name);

}

在控制台搜索发现, 根本没有含有redis的组件

此时, 我们如果在pom.xml中加入 redis 的 场景启动器

XML 复制代码
<!--        添加redis的场景启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

再次运行主程序,会发现控制台输出的组件列表中 有了 redis,

说明虽然spingBoot帮我们准备了 技术集合A,配置集合B, 但是需要我们自己去通过场景启动器选择加载哪些需要的配置

小结:

简单点理解还可以这么来, 即spingBoot帮我们准备了一大堆的食材(spring.factories), 且这堆食材按菜名分类打包好了(AutoConfiguration) , 我们就是厨师,指定要做什么菜(starter场景启动器,根据条件装配@Conditional~~,帮我们自动配置bean),然后再指出自己个性化的菜单(即application.properties 或者是 yml) , 最后springBoot根据我们需要的菜,及个性化的指定 , 帮我们自动配置好菜品, 这就是整个自动化配置的原理的理解。

具体面试,还是要按照专业一点的解释。

++专业化解释:++

3、应用总结

自动配置相当于自动档,我们需要先懂得各种技术(ssm,redis,mybatisPlus)的手动档配置, 再结合自动配置帮我们配置了什么,我们还需要什么配置什么, 我们才真正能够应用好spingBoot的自动配置

相关推荐
好好研究2 小时前
SpringBoot - yml配置文件
java·spring boot·spring
JH30735 小时前
SpringBoot自定义启动banner:给项目加个专属“开机画面”
java·spring boot·后端
猿小羽5 小时前
AI 学习与实战系列:Spring AI + MCP 深度实战——构建标准化、可扩展的智能 Agent 系统
java·spring boot·llm·agent·spring ai·mcp·model context protocol
Coder_Boy_7 小时前
基于SpringAI的在线考试系统-数据库设计核心业务方案
java·数据库·spring boot·ddd·tdd
风象南8 小时前
Spring Boot 定时任务多实例互斥执行
java·spring boot·后端
毕设源码-郭学长8 小时前
【开题答辩全过程】以 基于Springboot旅游景点管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
Y_039 小时前
SpringBoot+VUE3的图书管理系统
vue.js·spring boot·毕业设计·数据可视化
像少年啦飞驰点、9 小时前
零基础入门 Spring Boot:从‘Hello World’到可部署微服务的完整学习路径
java·spring boot·web开发·编程入门·后端教程
qq_124987075310 小时前
基于SpringBoot的闪电队篮球俱乐部管理系统的设计与开发(源码+论文+部署+安装)
java·数据库·spring boot·后端·spring·毕业设计·计算机毕业设计
开开心心_Every10 小时前
PDF转图片工具推荐:免费支持批量转换
linux·运维·服务器·spring boot·edge·pdf·powerpoint