整理自 Spring Boot 面试题 30 道。详细原理见下方 Spring Boot 基础专题四篇。
相关学习笔记
| 专题 | 笔记 |
|---|---|
| Spring 全家桶 | Spring 全家桶 |
| Spring 核心 | Spring 面试题精选 |
| 入门与启动 | Spring Boot 入门与启动 |
| Spring Cloud | Spring Cloud 面试题 49 道 |
| 配置与多环境 | Spring Boot 配置与多环境 |
| 自动配置与 Starter | Spring Boot 自动配置与 Starter |
| Web、运维与测试 | Spring Boot Web、运维与测试 |
1. 什么是 Spring Boot
在 Spring 之上快速构建独立、生产级应用的框架,最少配置即可运行(内嵌容器、java -jar)。
2. Spring Boot 的特征
内嵌 Tomcat/Jetty/Undertow;Starter 依赖;自动配置;Actuator 监控;无 XML;外部化配置。
3. 如何快速构建 Spring Boot 项目
start.spring.io、IDE(IDEA/STS)、Spring Boot CLI。
4. 启动类注解?由哪些注解组成
@SpringBootApplication = @SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan。可 exclude 关闭某项自动配置。
5. 什么是 YAML
可读性高的数据序列化格式,比 properties 更有层次结构。
6. Spring Boot 支持的配置文件格式
properties、yml/yaml。
7. Spring Boot 启动方式
main 方法;java -jar;Maven/Gradle 插件。
8. Spring Boot 需要独立容器吗
不需要,内嵌 Web 容器。
9. Spring Boot 配置途径(优先级从高到低)
命令行 → JNDI → JVM 系统属性 → 环境变量 → random.* → jar 外配置 → jar 内配置 → @PropertySource → 默认。
10. application 文件可放位置与优先级
./config/ > 运行目录 > classpath config/ > classpath 根;可 --spring.config.location 指定。
11. Spring Boot 自动配置原理
@EnableAutoConfiguration → 读取 META-INF/spring.factories(或 Boot 3 的 imports 文件)中的自动配置类,按 @Conditional* 条件注册 Bean。
12. 热部署方式
spring-boot-devtools、Spring Loaded、JRebel、模板热加载。
13. bootstrap.yml 和 application.yml
bootstrap.yml 优先,常用于配置中心连接等引导配置。
14. 如何修改端口号
server.port(yml/properties)、--server.port、 -Dserver.port。
15. 开启 Spring Boot 特性的方式
继承 spring-boot-starter-parent 或导入 spring-boot-dependencies BOM。
16. 如何兼容 Spring 项目
@ImportResource("classpath:spring.xml") 引入原有 XML 配置。
17. Spring Boot 配置监控
引入 Actuator(spring-boot-starter-actuator),暴露健康、指标等端点。
18. 获得 Bean 装配报告访问哪个端点
/actuator/beans(2.x 后多在 /actuator 前缀下)。
19. 关闭应用程序访问哪个端点
/actuator/shutdown(默认关闭,需 management.endpoint.shutdown.enabled=true)。
20. 查看发布应用信息访问哪个端点
/actuator/info。
21. 针对请求访问的组合注解
@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping。
22. Spring Boot 中的 starter
把功能相关依赖与默认配置打包,简化依赖管理与版本冲突。
23. Spring Boot 集成 Mybatis
mybatis-spring-boot-starter + 数据源与 mapper-locations 配置。
24. 什么是 Spring Profiles
按环境(dev/test/prod)注册不同 Bean 或加载不同配置,实现多环境隔离。
25. 不同环境的配置文件
application.properties + application-{profile}.properties/yml,如 application-dev.yml。
26. 如何激活某个环境的配置
spring.profiles.active=dev(yml/properties)或启动参数 --spring.profiles.active=dev。
27. 编写测试用例的注解
@SpringBootTest(集成测试);还可配合 @WebMvcTest、@DataJpaTest 等切片测试。
28. Spring Boot 异常处理相关注解
@ControllerAdvice + @ExceptionHandler 全局处理;REST 项目常用 @RestControllerAdvice。
29. Spring Boot 1.x 和 2.x 区别
基于 Spring 5 / JDK 8+;配置项变更;Actuator 变化;中文配置可直接读取;依赖插件版本提高等。(3.x 需 JDK 17+)
30. Spring Boot 读取配置相关注解
@Value、@ConfigurationProperties、@PropertySource、Environment。