SpringBoot 自动装配的原理
SpringBoot 自动装配的核心是 “约定优于配置”,通过注解和 SPI(服务提供者接口)机制,自动完成 Bean 的注册和配置,无需手动编写 XML 或@Bean注解,原理分 3 步:
- 1. 启动类注解触发自动装配:启动类上的
@SpringBootApplication是复合注解,其中@EnableAutoConfiguration是自动装配的 “开关”。 - 2.
@EnableAutoConfiguration的作用:- 该注解导入
AutoConfigurationImportSelector类,其核心方法selectImports()会扫描 META-INF/spring.factories 文件(SpringBoot starter 包和自定义 starter 中均包含此文件)。 spring.factories文件中配置了大量 “自动配置类”(如HttpEncodingAutoConfiguration、DataSourceAutoConfiguration),这些类对应不同场景的默认配置。
- 该注解导入
- 3. 自动配置类生效逻辑:
- 每个自动配置类(如
DataSourceAutoConfiguration)都有@Conditional系列注解(如@ConditionalOnClass:判断类路径是否有指定类,如DataSource;@ConditionalOnMissingBean:判断容器中是否没有指定 Bean)。 - 若满足
@Conditional条件,自动配置类会向容器中注册默认 Bean(如DataSource),并加载默认配置(如从 application.properties 中读取spring.datasource.url等参数)。
- 每个自动配置类(如
示例:当引入spring-boot-starter-web依赖时,spring.factories中的DispatcherServletAutoConfiguration会生效(因类路径有DispatcherServlet),自动向容器注册DispatcherServlet(SpringMVC 核心),无需手动配置。
#
上次更新: 12/30/2025