SpringBoot
大约 3 分钟
阅读提示
推荐按“为什么用 -> 自动配置 -> 启动流程 -> 常见落地问题”顺序复习。
面试回答时别只背注解,尽量结合你项目里真实的启动、配置、异步和跨域实践。
1、什么是 Spring Boot?它解决了什么问题?
回答提示:
- 核心价值:简化 Spring 项目搭建与配置。
- 通过“约定优于配置 + 自动配置 + Starter”,降低开发门槛。
- 内嵌容器让应用可独立运行。
参考回答:
- Spring Boot 是一套快速构建 Spring 应用的脚手架体系。
- 它把重复配置模板化,让我们更关注业务开发而不是框架装配。
2、Spring Boot 的核心特性有哪些?
- 自动配置(Auto Configuration)。
- 起步依赖(Starter)。
- 内嵌服务器(Tomcat/Jetty/Undertow)。
- 外部化配置(properties/yaml/环境变量/命令行)。
- 生产可观测能力(Actuator)。
3、@SpringBootApplication 由哪些注解组成?
回答提示:
@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan
参考回答:
@SpringBootApplication本质是组合注解,分别负责“配置类标识、自动配置开关、组件扫描”。
4、Spring Boot 自动配置原理是什么?
回答提示:
- 入口是
@EnableAutoConfiguration。 - 通过自动配置类 + 条件注解按需生效。
- 依赖类路径与环境配置决定最终装配结果。
参考回答:
- 自动配置不是“无脑全配”,而是“条件成立才装配”。
- 常见条件注解包括
@ConditionalOnClass、@ConditionalOnMissingBean、@ConditionalOnProperty。
5、配置文件什么时候加载到内存?
回答提示:
- 在应用启动早期的 Environment 准备阶段加载。
- 在
SpringApplication.run()流程中,先构建 Environment,再刷新容器。
参考回答:
- 配置文件会在 ApplicationContext 刷新前加载完成,用于后续自动配置与 Bean 初始化。
- 命令行参数、环境变量通常优先级更高,可覆盖文件配置。
6、Spring Boot 启动流程怎么讲更清晰?
- 创建
SpringApplication。 - 准备 Environment(加载配置)。
- 创建并刷新 ApplicationContext。
- 执行自动配置与 Bean 初始化。
- 启动内嵌服务器。
- 发布启动完成事件。
7、Spring Boot 如何实现异步?
回答提示:
- 常见方式:
@Async+ 线程池。 - 复杂编排:
CompletableFuture。 - 彻底解耦:消息队列(Kafka/RabbitMQ)。
参考回答:
- 项目里建议自定义线程池并命名,避免直接使用默认线程池导致不可控风险。
8、后端如何处理跨域?
- CORS(推荐):全局配置或
@CrossOrigin。 - 网关统一处理:在 API 网关层做跨域策略。
- 反向代理:Nginx 转发规避浏览器同源限制。
9、面试高频追问:如何避免“只会背概念”?
可直接复述模板:
- 我们在项目里主要依赖 Spring Boot 自动配置提升交付速度,但关键配置会显式声明,避免隐式行为带来的排查成本。
- 异步能力统一接入线程池并做监控告警,避免任务堆积不可见。
- 跨域策略放在网关统一治理,服务内部只保留必要的细粒度配置。
