SpringBoot常见“学习”题总结(付费)
约 700 字大约 2 分钟
31. Spring Boot 3.0 有哪些新特性?
- 基于 Java 17:最低要求 JDK 17,全面拥抱 Jakarta EE 9/10(javax 包改为 jakarta)。
- Native Image 支持:正式引入 Spring Native,支持 GraalVM 原生镜像构建,启动速度毫秒级,内存占用极低。
- Observability(可观测性):内置 Micrometer Tracing,统一了 Metrics 和 Tracing。
- Log4j2 增强:支持 Profile 特定配置。
📝 通俗解释
Spring Boot 3.0:更快、更强、更现代。
- Java 17:门槛高了,但这意味能用更多新语法(var, record, switch 增强等)。
- Native Image:启动飞快,像 C++ 程序一样,不用装 JVM 也能跑(通过 GraalVM)。
- Observability:自带“体检仪”,系统哪里慢、哪里报错,看得更清楚。
32. Spring Boot 和 Spring Cloud 的关系是什么?
- Spring Boot:关注的是快速开发单个微服务。
- Spring Cloud:关注的是微服务之间的协调治理(服务发现、配置中心、熔断限流、网关等)。
- 关系:Spring Cloud 必须基于 Spring Boot 构建。Spring Boot 是基石,Spring Cloud 是上层建筑。
33. @RestController 和 @Controller 有什么区别?
- @Controller:通常配合视图解析器(InternalResourceViewResolver)返回 JSP、HTML 页面。如果要返回 JSON,需要在方法上加
@ResponseBody。 - @RestController:是
@Controller和@ResponseBody的组合注解。类中所有方法默认返回 JSON/XML 数据,不走视图解析。
34. Spring Boot 如何解决 Jar 包冲突?
- Maven 依赖树:使用
mvn dependency:tree查看依赖树,找到冲突的包。 - 排除依赖:在 pom.xml 中使用
<exclusions>标签排除不需要的传递性依赖。 - 版本锁定:在
<dependencyManagement>中锁定冲突包的版本。 - 利用父工程:
spring-boot-starter-parent已经帮我们仲裁了大多数常用库的版本,尽量使用它管理的版本。
35. 什么是 Spring Boot 的“约定优于配置”?
这是一种软件设计范式。Spring Boot 默认提供了一套最佳实践的配置(约定),例如:
- 默认扫描启动类所在包。
- 默认配置文件名为
application.properties。 - 默认静态资源放在
static或public目录。 - 默认嵌入 Tomcat 容器,端口 8080。
开发者只有在需要自定义时才去修改配置,从而极大减少了配置文件的数量。
📝 通俗解释
自带套餐。
- 以前用 Spring,像点菜,盘子、碗、筷子都得自己配(写 xml)。
- Spring Boot 像肯德基套餐,默认给你配好可乐薯条(默认端口 8080,默认扫描当前包)。
- 好处:拿来就能吃(跑)。
- 坏处:想换口味(改配置)得知道怎么改。
