【SpringBoot自动配置原理】高频面试题深度解析
📌 2025年Java面试宝典最新版
链接: https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g
提取码: 9b3g
(建议保存,涵盖SpringBoot源码解析+大厂真题)
一、SpringBoot自动配置到底解决了什么问题?
想象你每次搭新项目都要配数据源、事务管理器、MVC组件...SpringBoot自动配置就是来干掉这些重复劳动的!它通过约定大于配置的思想,根据依赖自动装配Bean。比如你加了spring-boot-starter-data-jpa,它就会自动配好DataSource、EntityManager等组件。

二、自动配置的核心触发点:@SpringBootApplication
这个注解是SpringBoot自动配置的入口,它实际是三个注解的复合体:
@SpringBootConfiguration // 标记配置类
@EnableAutoConfiguration // 开启自动配置的关键!
@ComponentScan // 组件扫描
其中@EnableAutoConfiguration通过@Import加载了AutoConfigurationImportSelector,这个类会扫描所有jar包中的META-INF/spring.factories文件,加载其中声明的自动配置类。
三、自动配置的底层机制:条件化装配
SpringBoot自动配置的核心秘密在于条件注解!比如:
@ConditionalOnClass:类路径存在指定类时生效@ConditionalOnMissingBean:容器中没有该Bean时生效@ConditionalOnProperty:配置参数满足条件时生效
例如数据源的自动配置:
@Configuration
@ConditionalOnClass({DataSource.class, EmbeddedDatabaseType.class})
@EnableConfigurationProperties(DataSourceProperties.class)
public class DataSourceAutoConfiguration {
// 当容器没有DataSource Bean时,自动创建Hikari数据源
@Bean
@ConditionalOnMissingBean
public DataSource dataSource() {
return new HikariDataSource();
}
}
四、自动配置的执行流程(面试重点)
- 启动类加载:执行
SpringApplication.run() - 加载自动配置类:通过
spring.factories读取org.springframework.boot.autoconfigure.EnableAutoConfiguration指定的配置类 - 过滤生效配置:根据条件注解(如
@ConditionalOnClass)筛选出最终生效的配置类 - Bean装配:执行配置类中的
@Bean方法,将组件注入IoC容器

五、如何自定义一个Starter?
这是面试加分项!手写Starter的步骤:
- 创建
xxx-spring-boot-starter项目 - 添加配置类,用
@Configuration+条件注解定义Bean - 在
resources/META-INF下创建spring.factories文件:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.MyAutoConfiguration
- 其他项目引入该starter依赖即可自动装配
六、调试自动配置的实用技巧
遇到配置不生效?两个神技:
- 启动时加参数:
--debug查看自动配置报告(哪些生效/未生效) - 查看ConditionEvaluationReport:
在Bean中注入该对象,打印详细条件评估日志
💡 高频面试题答案模板
面试官:说说SpringBoot自动配置原理?
答:
- 核心入口是
@EnableAutoConfiguration注解- 底层机制:通过
spring.factories加载配置类 + 条件注解动态装配Bean- 执行流程:启动时扫描所有jar包的
META-INF/spring.factories,过滤出满足条件的配置类- 设计思想:约定优于配置,避免重复样板代码
🚀 特别提示:
需要开通面试鸭会员的同学,通过 面试鸭返利网 找我可返现25元!
已帮助300+程序员低价获取大厂真题库+会员特权👇
返回首页 | 最新面试题持续更新中



