Skip to content

05 — Spring Boot 自动配置

定位: Spring Boot 的"约定优于配置"——从自动配置到生产级监控 面试高频度: ⭐⭐⭐⭐⭐

一、板块在体系中的位置

Spring Boot 构建在所有 Spring 模块之上,提供自动配置和开箱即用的体验。

二、知识全景图

+----------------------------------------------------+
|            Spring Boot 核心知识体系                   |
|                                                     |
|  +----------------------------------------------+  |
|  |  1. 自动配置原理                               |  |
|  |  @EnableAutoConfiguration -> AutoConfiguration |  |
|  |  .imports -> 条件评估 -> 注册Bean               |  |
|  +----------------------------------------------+  |
|                      |                              |
|  +----------------------------------------------+  |
|  |  2. 条件注解与定制 Starter                    |  |
|  |  @ConditionalOnClass/MissingBean/Property     |  |
|  |  Starter 命名规范 + 创建步骤                   |  |
|  +----------------------------------------------+  |
|                      |                              |
|  +----------------------------------------------+  |
|  |  3. 外部化配置与 Actuator                     |  |
|  |  加载顺序 / @Value / @ConfigurationProperties |  |
|  |  健康检查 / Metrics / 端点管理                 |  |
|  +----------------------------------------------+  |
+----------------------------------------------------+

三、子专题导航

#主题面试频率核心内容
05.1自动配置原理⭐⭐⭐⭐⭐@SpringBootApplication 三大注解、自动配置加载原理、spring.factories vs AutoConfiguration.imports
05.2条件注解与定制 Starter⭐⭐⭐⭐@ConditionalOnXxx 体系、Starter 命名规范、手动创建 Starter 步骤
05.3外部化配置与 Actuator⭐⭐⭐⭐配置加载优先级、@ConfigurationProperties、Actuator 端点

四、核心面试题

  1. @SpringBootApplication 由哪些注解组成?各自的作用?
  2. 自动配置的实现原理?spring.factories 和 AutoConfiguration.imports 有何区别?
  3. 条件注解的执行顺序?编写自定义 Starter 需要考虑什么?
  4. Spring Boot 2.x 和 3.x 在自动配置上有什么变化?
  5. application.yml 和 application-{profile}.yml 的优先级?
  6. 如何将配置文件的属性绑定到 Java Bean?@Value 和 @ConfigurationProperties 的区别?
  7. Actuator 的安全如何保障?

五、相关板块

  • **Spring MVC** — Spring Boot 内嵌 Web 容器
  • **数据访问** — Spring Boot 自动配置数据源
  • **事务管理** — 自动配置事务管理器

📚 相关链接

  • **Spring文库设计文档** — 文库设计总纲

Knowledge4J — Java 知识库