对比 Spring Boot 2.x 与 1.x,两者在核心特性上有哪些显著差异与升级点?
考察说明
考查候选人对 Spring Boot 主要版本演进的理解,重点在差异点而非全面介绍。
回答思路
- 【回答框架 1】Spring Boot 2.x 基于 Spring Framework 5 构建,因此最低要求 Java 8(并支持 Java 11),而 1.x 基于 Spring Framework 4,通常要求 Java 6/7。这是版本迁移的基础差异。
- 【回答框架 2】在配置属性方面,2.x 对许多属性进行了重新命名或调整,例如 server.context-path 改为 server.servlet.context-path,且大量属性名称规范化。项目需相应更新配置。
- 【回答框架 3】依赖管理上,2.x 引入了 Spring Boot 2 的依赖 BOM(Bill of Materials),使得依赖版本管理更集中;同时默认使用 Tomcat 9,而 1.x 默认 Tomcat 8。
- 【回答框架 4】2.x 增强了响应式编程支持,通过 spring-boot-starter-webflux 提供 WebFlux,支持非阻塞式应用开发,而 1.x 仅支持传统的 Servlet 栈。
- 【回答框架 5】2.x 在自动配置和指标监控方面有显著改进,引入了 Micrometer 作为指标门面,统一了监控端点(如 /actuator),并支持更多监控系统,而 1.x 使用的 /metrics 端点已废弃。
- 【关键点 1】Spring Boot 2.x 基于 Spring Framework 5,要求 Java 8+,而 1.x 基于 Framework 4,支持 Java 6/7。
- 【关键点 2】配置属性有变化,如 server.context-path 改为 server.servlet.context-path。
- 【关键点 3】2.x 引入 WebFlux 响应式编程支持,1.x 无。
- 【关键点 4】2.x 默认使用 Tomcat 9,1.x 默认 Tomcat 8。
- 【关键点 5】2.x 使用 Micrometer 统一指标监控,1.x 的 /metrics 已废弃。
- 【易错点 1】不要简单认为 2.x 只是增加了新特性,忽略配置迁移和依赖升级带来的兼容性问题。
- 【易错点 2】不要混淆 Spring Boot 2.x 与 Spring Boot 3.x,后者要求 Java 17,且基于 Spring Framework 6。
- 【易错点 3】不要遗漏版本升级对第三方库兼容性的影响。