一、Spring Boot 与自动配置初相识
1.1 Spring Boot 简介
Spring Boot 是 Java 开发中的核心框架之一,旨在简化 Spring 应用的初始搭建及开发过程。在 Spring Boot 出现之前,传统 Spring 开发需要大量手动配置 XML 文件来定义 Bean、数据源和事务管理等,导致配置繁琐且易出错。
Spring Boot 采用'约定优于配置'的理念,预设了多种默认配置。开发者只需按规范组织代码并引入依赖,即可快速启动应用。例如,创建项目时仅需在 pom.xml 中引入相关依赖,Spring Boot 便会自动配置所需组件。
1.2 自动配置的概念
自动配置是 Spring Boot 的核心特性,体现了'约定优于配置'。它根据项目中引入的依赖和配置,自动提供默认配置。例如,引入 spring-boot-starter-web 依赖后,Spring Boot 会自动配置 Tomcat 服务器和 Spring MVC 框架,无需手动编写大量配置代码。
1.3 自动配置的重要性
对比传统 Spring 开发,Spring Boot 极大提高了效率。传统方式需配置 web.xml、视图解析器等,并管理依赖版本。而 Spring Boot 只需引入依赖并添加 @SpringBootApplication 注解,即可自动完成服务器配置、Servlet 注册等任务,让开发者专注于业务逻辑。
二、Spring Boot 自动配置核心原理
2.1 核心注解 @EnableAutoConfiguration
@EnableAutoConfiguration 是自动配置的核心触发器。@SpringBootApplication 组合注解包含了此注解。它通过 @Import(AutoConfigurationImportSelector.class) 导入选择器类,扫描并加载类路径下的自动配置类。
示例:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MySpringBootApp {
public static void main(String[] args) {
SpringApplication.run(MySpringBootApp.class, args);
}
}
启动时,该注解指示 Spring Boot 加载与 Web 相关的自动配置类(如 WebMvcAutoConfiguration)。
2.2 AutoConfigurationImportSelector
该类实现了 DeferredImportSelector 接口,负责延迟导入配置类。核心方法 selectImports() 通过 SpringFactoriesLoader 加载 META-INF/spring.factories 中注册的自动配置类。
步骤如下:
- 解析 spring.factories:读取所有注册的自动配置类。
- 评估条件:检查
@Conditional注解(如@ConditionalOnClass),仅激活满足条件的配置类。



