自定义 Starter 实现
候选人小林在面试蚂蚁 P7 时,面试官问道:
"你实现过自定义的 Spring Boot Starter 吗?"
小林说:"没有..."
面试官追问:"那你知道怎么实现吗?"
小林说:"需要创建自动配置类,然后注册..."
面试官:"具体怎么注册?spring.factories 和 .imports 文件有什么区别?"
小林答不上来。
【面试官心理】 这道题我用来测试候选人的 Spring Boot 深度应用能力。实现过自定义 Starter 的,说明对 Spring Boot 自动配置原理有实战理解。能说出 .imports 文件(Spring Boot 2.7+)和 spring.factories 的区别,是 P6+ 级别的候选人。
一、核心问题 🔴
1.1 问题拆解
第一层:结构
- "自定义 Starter 需要哪些组件?"
- "autoconfigure 模块和 starter 模块是什么关系?"
第二层:实现
- "怎么创建自动配置类?"
- "怎么注册自动配置?"
- "@EnableConfigurationProperties 怎么用?"
第三层:条件
- "@Conditional 系列注解怎么用?"
- "怎么让配置只在满足条件时生效?"
1.2 标准回答
P5 回答:标准结构
1.3 追问升级
追问 1:完整的自动配置类实现
追问 2:使用方
二、面试总结
自定义 Starter 是 Spring Boot 自动配置的最终形态,体现了"约定大于配置"的核心思想。