乐途乐途
主页
  • 计算机基础

    • TCP/IP
    • Linux
    • HTTP
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C
    • C++
    • Java SE
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • Maven 入门
    • Maven 进阶
    • MyBatis
    • Spring
    • Spring MVC
  • Java

    • Spring Boot
    • Spring Cloud
    • Spring Cloud Alibaba
    • Spring Security
    • Spring AI
    • Spring Batch
    • Kafka
    • Java 设计模式
  • 缓存

    • Redis
  • 搜索引擎

    • Elasticsearch
  • 分布式协调

    • ZooKeeper
联系
阿里云
主页
  • 计算机基础

    • TCP/IP
    • Linux
    • HTTP
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C
    • C++
    • Java SE
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • Maven 入门
    • Maven 进阶
    • MyBatis
    • Spring
    • Spring MVC
  • Java

    • Spring Boot
    • Spring Cloud
    • Spring Cloud Alibaba
    • Spring Security
    • Spring AI
    • Spring Batch
    • Kafka
    • Java 设计模式
  • 缓存

    • Redis
  • 搜索引擎

    • Elasticsearch
  • 分布式协调

    • ZooKeeper
联系
阿里云
  • 学习路径
  • 第1章 Spring Boot 概述

    • 章节导读:Spring Boot概述与核心理念
    • Spring Boot是什么
    • Spring Boot与Spring Framework的关系
    • 约定优于配置
  • 第2章 快速入门与第一个应用

    • 章节导读:快速入门与第一个应用
    • SpringApplication
    • 第一个Spring Boot应用
  • 第3章 起步依赖与版本管理

    • 章节导读:起步依赖与版本管理
    • 起步依赖
    • BOM版本管理
  • 第4章 自动配置原理

    • 章节导读:自动配置原理
    • 自动配置原理
    • AutoConfigurationImportSelector
    • 自动配置报告
  • 第5章 核心注解

    • 章节导读:核心注解
    • @SpringBootApplication
    • @EnableAutoConfiguration
    • @ConditionalOnClass
    • @ConditionalOnMissingBean
    • @ConditionalOnBean
    • @ConditionalOnProperty
  • 第6章 外部化配置与属性绑定

    • 章节导读:外部化配置与属性绑定
    • 外部化配置
    • @ConfigurationProperties
    • @Value
    • 配置属性优先级
  • 第7章 Profile 与环境切换

    • 章节导读:Profile与环境切换
    • @Profile
    • 多环境配置文件
  • 第8章 内嵌服务器与部署

    • 章节导读:内嵌服务器与部署
    • 内嵌服务器
    • Fat Jar
  • 第9章 Actuator 与监控

    • 章节导读:Actuator与监控
    • Actuator Health
    • Actuator Info
    • Actuator Metrics
    • 自定义Endpoint
    • 自定义HealthIndicator
  • 第10章 开发工具与最佳实践

    • 章节导读:开发工具与最佳实践
    • Banner自定义
    • 热部署

"小崔看着启动日志里密密麻麻的自动配置类,困惑地问:'白歌,这些 DataSourceAutoConfiguration、WebMvcAutoConfiguration 是怎么自动跑起来的?'白歌说:'这背后有一条从 @EnableAutoConfiguration 到 spring.factories 再到条件评估的完整流水线。'这一章,你将亲手拆解 Spring Boot 自动配置的流水线,看清每一颗螺丝的转动。"

章节导读:自动配置原理

本章定位

本章解决的核心问题:Spring Boot 如何在启动阶段,从近两百个候选配置类中,精确筛选出当前应用真正需要的那些,并将它们注册为 Bean,从而实现"零配置"启动。

学习路线图

学习顺序说明:先建立自动配置的全流程骨架(从 @EnableAutoConfiguration 到 Bean 注册)→ 再深入 AutoConfigurationImportSelector 这个"配置读取器",理解它如何从 spring.factories 加载候选配置并执行过滤 → 最后学会阅读 debug=true 输出的条件评估报告,做到"启动问题能定位、自动配置可排查"。

文件关系说明

文件一句话角色
自动配置原理.md自动配置的全流程地图:从 @EnableAutoConfiguration 到条件评估再到 Bean 注册的主干逻辑。
AutoConfigurationImportSelector.md自动配置的"配置读取器",负责扫描 spring.factories、加载候选配置类列表、执行去重与过滤。
自动配置报告.md启动期的"诊断工具",通过 debug=true 输出条件评估结果,暴露正匹配/负匹配详情。

知识图谱

核心逻辑:@EnableAutoConfiguration 是扳机,AutoConfigurationImportSelector 是弹仓,spring.factories 是弹药库,@Conditional 家族是瞄准镜——只有弹药库里的配置类通过瞄准镜的校验,才会被射入 Spring 容器。

与上下章的衔接

上一章回顾:你理解了 Starter 如何将依赖打包。本章将揭示 Starter 背后的自动配置类是如何被激活的——Starter 引入 JAR 只是第一步,真正让配置生效的是 spring.factories 中的自动配置类注册。

下一章预告:本章学完后,你已经理解自动配置的"流水线骨架"。下一章「核心注解」将逐一拆解流水线上的核心条件注解(@ConditionalOnClass、@ConditionalOnMissingBean 等),它们是自动配置"智能决策"的底层逻辑单元。

下一页
自动配置原理