SpringBoot自动配置原理面试

2025年Java面试宝典(高频考点全覆盖)
🔵链接: https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g
提取码: 9b3g
一、面试必问:SpringBoot自动配置的核心流程
最近帮粉丝模拟面试时,发现SpringBoot自动配置原理几乎是必考题。这里给大家拆解一个标准回答模板,照着说至少能拿80分!
关键点可以分三步走:
- 启动阶段的
@SpringBootApplication:这个注解是组合注解,包含@EnableAutoConfiguration——它是自动配置的开关 - 加载
spring.factories:SpringBoot会扫描所有jar包中的META-INF/spring.factories文件,找到EnableAutoConfiguration对应的配置类 - 条件化装配:通过
@Conditional系列注解(如@ConditionalOnClass)判断当前环境是否满足配置要求
举个🌰:当你的classpath里有DataSource.class时,DataSourceAutoConfiguration才会生效。这种按需加载的机制,既保证了灵活性,又避免资源浪费。
二、自动配置如何实现"开箱即用"?

面试官可能会追问细节,建议重点准备这些内容:
- Starter机制:每个Starter本质是一个依赖描述文件(pom.xml),通过传递依赖引入特定场景所需的库
- 条件注解的优先级:
@ConditionalOnBean和@ConditionalOnMissingBean的执行顺序会影响最终的Bean装配结果 - 自定义自动配置:
- 创建
XXXAutoConfiguration类并标注@Configuration - 在
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports中注册配置类 - 配合
@Conditional控制生效条件
- 创建
遇到发散性问题时,可以举个实际场景:“假设我要给公司内部中间件做自动配置,会先分析需要哪些环境条件,比如特定注解是否存在、某个类是否在类路径下,再通过条件注解控制配置类的加载。”
三、高频追问点避坑指南
根据面试鸭返利网整理的2024年面经,这三个问题出现率最高:
-
自动配置和手动配置冲突怎么办?
- SpringBoot采用
@ConditionalOnMissingBean优先策略,手动定义的Bean会覆盖自动配置
- SpringBoot采用
-
如何查看生效的自动配置?
- 启动时添加
--debug参数,控制台会输出Positive matches(生效的配置)和Negative matches(未生效的配置)
- 启动时添加
-
自动配置的执行顺序如何控制?
- 使用
@AutoConfigureOrder注解或AutoConfigure文件中的Before/After声明
- 使用

四、加分项:深入原理层
想要在技术面中脱颖而出,可以主动提到这些底层机制:
- SpringFactoriesLoader:SpringBoot扩展了SPI机制,不同于Java原生SPI的
ServiceLoader,它支持多jar包并行加载 - 配置类过滤:在
AutoConfigurationImportSelector中通过getExclusions()方法排除不必要的配置类 - 元注解的继承性:
@SpringBootApplication虽然标注了@ComponentScan,但默认扫描范围是主类所在包及其子包
如果时间允许,可以提一嘴SpringBoot 3.0的变化:“新版本弃用了spring.factories,改用META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件来声明自动配置类”。
需要刷题或购买面试鸭会员的同学,记得通过面试鸭返利网找我返现25元(原价129的会员实付104即可)。本文的面试宝典已上传网盘,建议结合《Spring源码深度解析》一起看效果更佳~


