一文搞懂 Spring Boot 自动配置原理

简介: Spring Boot 自动配置原理揭秘:通过 `@EnableAutoConfiguration` 加载 `META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports` 中的配置类,结合 `@Conditional` 按条件注入 Bean,实现“开箱即用”。核心在于约定大于配置,简化开发。

一文搞懂 Spring Boot 自动配置原理

一、前言

Spring Boot 之所以能够「开箱即用」,最核心的机制就是 —— 自动配置(Auto Configuration)

我们几乎不需要写任何复杂的 XML 或手动注册 Bean,Spring Boot 就能帮我们自动加载各种组件,例如:

  • 自动配置 Web 容器;
  • 自动加载数据源;
  • 自动创建 MVC、Security、Redis 等常用 Bean。

很多人会说:

“Spring Boot 真方便,但它到底是怎么知道我需要哪些 Bean 的?”

这篇文章,我们就来深入理解 Spring Boot 的 自动配置原理


二、自动配置是什么?

一句话解释:

自动配置 = 根据当前项目环境,自动为我们注入所需的 Bean。

Spring Boot 会在启动时扫描你的类路径(classpath),根据已有的依赖和配置文件(application.yml),自动装配相应的功能模块。

例如:

  • 你项目中有 spring-boot-starter-web → 自动配置 MVC、Tomcat。
  • 你项目中有 spring-boot-starter-data-jpa → 自动配置 DataSource、EntityManager。

三、自动配置的关键注解:@SpringBootApplication

当我们创建一个 Spring Boot 启动类时,一般会看到:

@SpringBootApplication
public class DemoApplication {
   
    public static void main(String[] args) {
   
        SpringApplication.run(DemoApplication.class, args);
    }
}

其实,@SpringBootApplication 是一个复合注解,它包含了三个核心注解:

@SpringBootConfiguration      // 相当于 @Configuration
@EnableAutoConfiguration      // 开启自动配置的关键注解
@ComponentScan                // 自动扫描当前包下的组件

四、@EnableAutoConfiguration 的原理

@EnableAutoConfiguration 的作用是:

告诉 Spring Boot:启动时去加载所有 “自动配置类”。

它的底层逻辑通过 @Import(AutoConfigurationImportSelector.class) 实现。
这个类会读取一个特殊的配置文件:

META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

这个文件里列出了 Spring Boot 所有可用的自动配置类,例如:


org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration
...

五、自动配置的执行顺序

自动配置的加载顺序大致如下:

读取 spring.factories 或 AutoConfiguration.imports 中所有配置类;

使用 @Conditional 系列注解进行条件匹配;

符合条件的配置类被加载进 IoC 容器;

如果我们自定义了同名 Bean,默认会优先使用自定义 Bean;

自动配置完成。

六、总结

Spring Boot 的自动配置机制 = 条件加载 + 模块化配置 + SPI 扩展。
正是因为这一套机制,Spring Boot 才能让我们从繁琐的 XML 地狱中解放出来,真正实现 “约定大于配置” 的开发体验。

目录
相关文章
|
6天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
5天前
|
云安全 人工智能 自然语言处理
阿里云x硅基流动:AI安全护栏助力构建可信模型生态
阿里云AI安全护栏:大模型的“智能过滤系统”。
|
5天前
|
人工智能 自然语言处理 自动驾驶
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
|
Linux 虚拟化 iOS开发
VMware Workstation Pro 25H2 for Windows & Linux - 领先的免费桌面虚拟化软件
VMware Workstation Pro 25H2 for Windows & Linux - 领先的免费桌面虚拟化软件
1076 4
|
8天前
|
存储 机器学习/深度学习 人工智能
大模型微调技术:LoRA原理与实践
本文深入解析大语言模型微调中的关键技术——低秩自适应(LoRA)。通过分析全参数微调的计算瓶颈,详细阐述LoRA的数学原理、实现机制和优势特点。文章包含完整的PyTorch实现代码、性能对比实验以及实际应用场景,为开发者提供高效微调大模型的实践指南。
675 2
|
6天前
|
编解码 自然语言处理 文字识别
Qwen3-VL再添丁!4B/8B Dense模型开源,更轻量,仍强大
凌晨,Qwen3-VL系列再添新成员——Dense架构的Qwen3-VL-8B、Qwen3-VL-4B 模型,本地部署友好,并完整保留了Qwen3-VL的全部表现,评测指标表现优秀。
505 7
Qwen3-VL再添丁!4B/8B Dense模型开源,更轻量,仍强大
|
7天前
|
JavaScript API 开发工具
如何在原生App中调用Uniapp的原生功能?
如何在原生App中调用Uniapp的原生功能?
331 139