70 个 Spring Boot 面试问题和答案 (2025)
Spring Boot 面试题(应届生)
1) 解释“Spring Boot”这个术语。
它是 Spring 框架的一个模块,为 Spring 框架提供了快速应用程序开发。Spring 模块用于创建基于 Spring 框架的应用程序,这些应用程序需要配置一些 Spring 文件。
👉 免费 PDF 下载:Spring Boot 面试题与答案 >>
2) 提及 Spring Boot 的一些优点
以下是使用 spring-boot 的一些主要优点
- 帮助您创建独立的应用程序,可以使用 java.jar 启动。
- 它为 Maven 配置提供了精确的“启动器”POM。
- 允许您直接嵌入 Undertow、Tomcat 或 Jetty。
- 在可能的情况下自动帮助您配置 spring。
3) 如何使用 Spring Initializer 创建 Spring Boot 应用程序?
它是 Spring 官方网站提供的 Web 工具。但是,您也可以通过输入项目详细信息来创建 Spring Boot 项目。
4) 说出使用 Spring Boot 的特性
使用 Spring Boot 的特性包括
- 启动器依赖
- 自动配置
- Spring Initializer
5) 解释 RAD 模型的不同阶段。
这是经常被问到的面试问题。RAD 模型的主要阶段是
- 业务建模:根据信息流和不同业务渠道之间的分配情况,设计产品。
- 数据建模:从业务建模收集的信息被提炼为对业务有意义的数据对象集。
- 应用程序生成:使用自动化工具进行软件构建,将过程和数据模型转换为原型。
6) 什么是 RAD 模型?
RAD 或快速应用程序开发过程是对瀑布模型的改进;它旨在在短时间内开发软件。RAD 遵循迭代的
SDLC RAD 模型具有以下阶段
- 业务建模
- 数据建模
- 流程建模
- 应用程序生成
- 测试和移交
7) 运行和停止 Spring Boot 可执行 jar 文件的命令是什么?
您需要打开 cmd 或 shell 窗口并使用命令
java -jar
示例
$ java -jar myproject-0.0.1-SNAPSHOT.jar
要停止,请使用 ctrl+C
8) 如何在 Spring Boot 中更改 JDK 版本?
要更改 Spring Boot 中的 JDK 版本,您可以通过添加 java.version 属性标签来覆盖它,如下所示
1.8
9) 运行 Spring Boot 应用程序到自定义端口需要遵循什么流程?
为了运行 Spring Boot 应用程序,您需要在 application.properties 中放置 server.port 属性。例如,server.port=8050
10) 什么是 Spring Boot starter?它有什么用?
Spring Boot 有许多 starter。它们是一组方便的依赖描述符。Starter 允许您将这些描述符包含在您的 pom.xml 中。
例如,如果您想使用 Spring MVC,您可以在 pom.xml 中将“spring–boot–starter–web”作为依赖项包含进来。
11) 可以将 Spring Boot 与非 Spring 应用程序一起使用吗?
不可以,因为 Spring Boot 仅限于 Spring 应用程序。
12) 在 Spring Boot 中可以使用哪个配置文件?
Spring Boot 项目中使用的配置文件称为 application.properties。它是一个重要文件,允许您覆盖默认配置。
13) Spring Boot 中的 DevTools 是什么?
Spring Boot DevTools 有助于提高开发人员的生产力。因此,您无需在每次进行更改时都重新部署应用程序。它允许开发人员在无需重新启动服务器的情况下加载更改。
14) Spring Boot 的重要特性有哪些?
Spring Boot 的重要特性是
- Web 开发
- Spring 应用程序
- 应用程序事件和监听器
- Admin 功能
- YAML 支持
- 类型安全配置
- 外部化配置
- 属性文件
- 日志和安全
15) Spring Boot 的核心组件是什么?
Spring Boot 的重要组件是
- Spring Boot Starter
- Spring Boot 自动配置
- Spring Boot Actuator
- Spring Boot CLI
16) 属性是如何定义的?在哪里定义?
您可以在类路径中的 application.properties 文件中定义属性。
示例:配置默认 DataSource bean
database.host=localhost
17) 什么是 spring-boot-starter-parent?
它是一个特殊的 starter,通过将 jar 添加到您的类路径中,使 Gradle 或 Maven 依赖管理变得容易。
18) 如何在 Spring Boot 中启用 HTTP/2 支持?
用户可以通过以下方式启用 HTTP/2 支持
server.http2.enabled configuration property.
19) 什么是 Spring Boot Actuator?
Spring Boot Actuator 允许您在要推送到生产环境时监视和管理您的应用程序。它通过 HTTP 端点帮助您控制应用程序。
20) 运行 Spring Boot 应用程序到自定义端口的命令是什么?
在 application.properties 中,添加以下属性。
server.port = 8181
21) 如何访问 application.properties 文件中定义的值?Spring Boot 中的属性文件是什么?
使用 @Value 注解访问 application.properties 文件中定义的属性。
@Value("${custom.value}") private String customVal;
22) Spring 和 Spring Boot 的主要区别是什么?
Spring 是一个基于 Java 的 Web 应用程序开发框架。另一方面,Spring Boot 是 Spring 框架的扩展,它消除了设置 Spring 应用程序所需的样板配置。
23) 解释 Spring Boot Admin
Spring Boot Admin 是一个社区项目,可帮助您管理和监视您的 Spring Boot 应用程序。
24) 如何使用 JPA 将 Spring Boot 连接到数据库?
Spring Boot 支持 spring-boot-data-JPA start,它有助于将 Spring 应用程序连接到关系数据库。
25) 解释 Spring Boot 中的 @RestController 注解?
@RestController 注解有助于将 @ResponseBody 和 @Controller 注解添加到类中。
您还可以将 org.springframework.web.bind.annotation 包导入到您的文件中。
26) 定义 Spring Initializer 的术语
Spring Initializer 是一个 Web 应用程序,可以为您创建初始项目结构。
27) 解释 Spring CLI
Spring CLI 用于编写 Groovy Spring Boot 应用程序,这有助于您编写简洁的代码。
28) 在 Spring Boot 应用程序中可以在哪里定义属性?
您可以在名为 application.properties 的文件中定义 Spring Boot 的属性。它可以通过手动创建此文件,或者您可以使用 Spring Initializer 来创建此文件。
29) Spring 支持哪些嵌入式容器?
Spring Boot 支持三个主要的嵌入式容器
1) Tomcat
2) Jetty
3) Undertow。
默认情况下,它使用 Tomcat 作为嵌入式容器。
30) 解释 Spring Boot 中的 Thymeleaf
Thymeleaf 是一个服务器端 Java 模板引擎,用于 Web 应用程序。它有助于为您的 Web 应用程序带来优雅的自然模板。
31) 什么是 Spring Boot 属性?
Spring Boot 提供各种属性,可以在我们项目的 application.properties 文件中指定。它有助于您设置服务器端口号、数据库连接配置等值。
Spring Boot 面试题(有经验者)
32) JPA 和 Hibernate 的主要区别是什么?
两者之间的主要区别在于 JPA 是一个规范/接口,而 Hibernate 只是 JPA 的实现。
33) Actuator 中的 shutdown 是什么?
Shutdown 是一个端点,有助于应用程序正常关闭。此功能默认不启用。
但是,您可以在 application.properties 文件中设置命令:management.endpoint.shutdown.enabled=true 来使用它。
34) 是否可以替换或覆盖 Spring Boot 中的嵌入式 Tomcat 服务器?
是的,可以使用 starter 依赖项将嵌入式 Tomcat 替换为任何其他服务器。为此,您可以根据需要使用 spring-boot-starter-jetty 作为依赖项。
35) 可以禁用 Spring Boot 应用程序中的默认 Web 服务器吗?
是的,我们可以通过使用 application.properties 来配置 Web 应用程序类型来禁用默认 Web 服务器。
36) 如何将过滤器添加到应用程序?
有三种方法可以将过滤器添加到 Spring Boot 应用程序
- 通过实现 Filter 接口。
- 使用 FilterRegistrationBean。
- 使用 MVC 控制器。
37) 什么是 Spring Boot Starter 项目?
Spring Boot 中的 Starters 是一组方便的描述符,包含在 Spring Boot 应用程序中。它带有各种与 Spring 相关的技术,使整个应用程序开发过程更加轻松。
38) 什么是 @PathVariable?
@PathVariable 注解可以帮助您直接从 URI 中提取信息。
39) 什么是 Swagger2?
Swagger 用于描述 API 的结构。Swagger 2 是 Spring Boot 中提供的一个开源服务,它使计算机更容易了解 API 的结构,例如 RESTful Web 服务。
40) 企业应用程序开发有哪些不同的环境?
- 开发
- QA
- 暂存
- 生产
41) RequestMapping 和 GetMapping 之间有什么主要区别?
RequestMapping 可以通过注解上的 method 属性与 GET、POST、PUT 等多种请求方法一起使用。而 GetMapping 只是 RequestMapping 的扩展,有助于提高请求的清晰度。
42) 如何在 Spring Boot 中定义属性?
您可以通过应用程序类路径中的 application.properties 文件在 Spring Boot 中定义属性,如下所示。
43) 如何使用 Maven 创建 Spring Boot 项目?
使用以下任何一种方法创建项目。
- Spring Initializr
- Spring Boot CLI
- Spring Starter Project Wizard
44) Spring Boot 中 Profiles 的作用是什么?
Profiles 用于分离 Spring 应用程序配置的各个部分,并使其仅在特定环境中可用。
45) 如何更改 Tomcat 的 HTTP 端口?
要更改 Tomcat 的 HTTP 端口,您需要更改 application.properties 文件中的默认 HTTP 属性。
46) Spring Boot 中的 LiveReload 是什么?
LiveReload 是一个 spring-boot-devtools 模块,其中包含 LiveReload 服务器,可在资源更改时触发浏览器刷新。LiveReload 服务器扩展可以在 Firefox、Chrome 和 Safari 上免费获得。
47) Spring 外部化配置的主要好处是什么?
外部化配置有助于在不同环境中处理相同的代码。开发人员可以使用 YAML 文件、属性文件、命令行参数和环境变量来外部化配置。
48) 在 Spring Boot 中“热替换”是什么意思?
这是一种无需重启 Tomcat 或 Jetty 服务器即可重新加载更改的方法。Eclipse 和许多其他 IDE 支持字节码热替换。如果您进行任何不影响方法签名的更改,它应该会无副作用地重新加载。
49) 解释 Spring Boot 的自动配置。
自动配置用于根据类路径参数的依赖项自动配置 Spring 应用程序。它使开发更快、更容易。
50) 面向切面的编程(AOP)是什么意思?
面向切面的编程是对面向对象编程的补充,旨在提高模块化。AOP 将程序逻辑分解为多个部分,这些部分称为关注点。
51) 如何在 Spring Boot 中启用日志记录?
为了启用调试日志记录,您可以在从命令提示符启动应用程序时指定 –debug。
52) 解释覆盖 Spring Boot 应用程序中的默认属性。
Spring Boot 包含许多属性,可以通过在 application.properties 中指定它们来轻松覆盖。
Spring Boot 面试题(5年经验)
53) 解释 Spring Boot 中的 Docker。
它是一个旨在通过容器创建、部署和运行项目的工具。
54) 定义 ELK stack。
ELK Stack 由三个开源产品组成:1) Elasticsearch,2) Logstash,3) Kibana。
- Elasticsearch:这是一个基于名为 Lucene 的开源搜索引擎的NoSQL 数据库。
- Logstash:它是一个数据处理管道工具,它接受来自源的输入,执行各种转换,并将数据导出到目标。
- Kibana:Kibana 帮助用户使用 Elasticsearch 中的图形和图表可视化数据。
55) 如何在 Spring Boot 中处理异常。
Spring Boot 通过 @ControllerAdvice 注解提供了一种非常有效的异常处理方式。
56) 解释缓存。
缓存是一个内存区域,它临时存储经常访问的数据,而这些数据获取或计算起来成本很高。
57) 什么是跨站请求伪造攻击?
跨站请求伪造攻击或一次点击攻击是一种强制其他用户在应用程序上执行恶意命令的攻击。CSRF 攻击专门针对状态更改的请求。
58) 定义 Apache Freemarker。
Freemarker 是一个基于 Java 的模板,用于生成纯文本、电子邮件、HTML 文件等。
59) 什么是 Spring Batch?
Spring Boot Batch 提供了代码可重用性,这在处理大量记录时很重要,包括事务管理、日志记录、跳过、作业处理统计和作业重新启动。
60) 解释 Apache Kafka。
Apache Kafka 是一个开源消息平台。它由 LinkedIn 开发。Apache Kafka 使用户能够构建分布式应用程序并处理实时数据源。Kafka 适用于脱机和在线消息传递。
61) 解释 Spring Boot 中的 CORS?
CORS 代表跨源资源共享,是浏览器实现的一种机制,有助于用户授权跨域请求。这种机制可以替代 IFrame 或 JSONP 等不太安全、功能较弱的技巧。
Spring Boot 面试题(10年经验)
62) 解释不同类型的依赖注入。
Spring Boot 中有两种类型的依赖注入。它们如下
- 构造函数注入:这是一种技术,其中一个类的对象为其提供了另一个对象的依赖。
- Setter 注入:这是一种依赖注入,其中框架通过 setter 方法注入基本类型和基于字符串的值。
63) 微服务的优势是什么?
以下是微服务的主要优势
- 它使开发快速而简单。
- 与所有容器兼容。
- 缩短生产时间。
- 它是一个轻量级模型,支持主要的业务应用程序。
64) Spring Boot 的默认包是什么?
没有包声明的类被视为默认包。
65) 解释嵌入式容器和 WAR 之间的区别。
两者之间的主要区别是
嵌入式容器帮助您将 Spring Boot 应用程序作为 JAR 从命令提示符运行,而无需设置任何 Web 服务器,而运行 WAR 则需要先设置 Tomcat。
66) 解释 Spring MVC。
它是一个传统的 Web 应用程序框架,有助于您构建 Web 应用程序。该框架类似于 Struts 框架。
67) <set> 标签的用途是什么?
此标签用于使用 XML 注入 Java Set。
68) “aspect”是什么意思?
它是一组提供横切关注点(cross-cutting concerns)的 API。
69) Spring Boot 中的 join point 是什么?
它是程序执行点,例如处理异常或执行方法。在 AOP 中,join point 被称为方法执行。
70) 如何在 Spring Boot 中设置活动配置文件?
按照以下方法在 Spring Boot 中设置活动配置文件。
- 在启动 Spring Boot 应用程序时将此配置文件作为参数传递。
- 在 application.properties 文件中设置活动配置文件。
71) 是否可以在不使用 basePackages filter 的情况下排除包?如何排除?
是的。只需在使用 @SpringBootApplication 注解时使用 exclude 属性,就可以在不使用 basePackages filter 的情况下排除包。
72) 列出使用 JavaConfig 方法的好处。
JavaConfig 方法的好处如下。
- 用户可以利用面向对象的配置。
- Spring Boot 配置通过消除复杂的 XML 配置来提高 Web 应用程序的效率。
Java Spring Boot 面试题
73) 解释将应用程序部署到虚拟机上的步骤。
以下是将应用程序部署到虚拟机上的步骤。
- 安装 Java.
- 安装应用程序服务器。
- 部署应用程序 war 文件。
74) 列出一些 Spring Boot Starters。
不同的 Spring Boot Starters 如下
- 安全性
- Parent
- web
- Thymeleaf
- Freemarker
这些面试问题也将有助于您的口试