您是一名 Java Spring Boot 开发人员,期待下次面试,但不知道会遇到什么问题,我们随时为您提供帮助!
本文将概述一些常见的 Spring Boot 面试问题和答案,供面试官用来测试你,从而帮助你做好适当的准备。
面试官使用战略性 Java Spring Boot 问题来测试面试者与给定角色相关的技能水平。因此,你应该准备好相关问题并知道如何回答。
在我们继续讨论面试问题和相应的答案之前,我们先简单概述一下 Spring Boot 是什么以及它对 Java 开发人员有多大用处。
什么是 Java Spring Boot?
这个 Java 框架是由一个重要团队于 2014 年创建的。 Spring Boot 是一个开源框架,允许您高效地开发独立的生产级应用程序,甚至可以在 Java 虚拟机 (JVM) 上运行它们。
Java 开发人员更喜欢使用 Java 来开发 Web 应用程序和微服务,因为它的设置过程快速且简单,并且配置时间安全。
Spring Boot 通过三个核心功能轻松设置和配置基于 Spring 的应用程序:
- 自动配置——Spring应用程序的自动配置。
- Spring Boot 提供了一种独特的方法来使用默认配置和安装所需依赖项的包。这种独特的方法可以帮助您快速建立项目。
- Sprsetupoot 允许应用程序独立运行,无需 Web 服务器。
Spring Boot 如何帮助 Java 开发人员?
首先,Spring Boot 使 Java 开发人员可以轻松自动配置开发生产级 Spring 应用程序所需的所有组件。从长远来看,这可以减少开发时间并最终提高效率。
Spring Boot 还可以轻松地与 Spring 生态系统集成,包括 Spring JDBC、Spring Data、Spring Security 和 Spring ORM。
Java 开发人员还可以将 Spring Boot 连接到 Oracle、MySQL、PostgreSQL 和 MongoDB 等各种数据库。
当然,诸如XML配置、Java Beans和数据库事务等灵活的配置也是有用的功能。
现在您已经对 Spring Boot 有了基本的了解,让我们探讨一些常见的 Spring Boot 面试问题和答案,以帮助您准备面试。
Spring Boot面试题及答案


Spring Boot 有哪些特点?
其中一些受欢迎的功能包括:
- Spring Boot CLI 提供 Groovy 用于创建 Spring Boot 应用程序。从长远来看,可以避免样板代码。
- Spring Boot 提供日志记录和安全功能,可以轻松保护您的应用程序免受潜在的安全威胁。
- 它提供了项目相关组件的自动配置,避免了不必要的 WAR 文件的风险。
- Starter Initializer 构建默认的内部项目结构。这消除了手动设置项目结构的需要。
- Spring Boot 执行器功能允许您在应用程序运行时访问见解和指标。
- 当然,Spring Boot 的关键功能之一是 Starter 依赖项,它有助于聚合特定功能的常用依赖项。

什么是 Spring Boot 启动器?
Spring Boot 启动器是一个依赖项描述符,其中包含一组依赖项管理提供程序,这些提供程序可为您的应用程序启用依赖项。这些为框架提供了自动依赖性解析。启动器可以轻松快速地推动开发。

什么是 Spring Boot 执行器以及它们的优点是什么?
执行器是 Spring Boot 的一项功能,可让您在应用程序运行时监视应用程序内部发生的情况。
例如,在调试期间,您可以使用 Actuator 通过提供对 CPU 使用率和 bean 识别等功能的访问来分析日志。
此外,Actuator 可以从 Web 检索数据,并提供对生产就绪的 REST 端点的轻松访问以监视和管理信息。

什么是百里香叶?如何使用百里香叶?
Thymeleaf 是一个 Java 服务器端模板,可为 Spring 和 HTML5 Java Web 应用程序创建自然的模板布局。
Spring Boot 使用 pom.xml 文件中的 spring-boot-starter-thymeleaf 依赖项来执行 thymeleaf 的自动配置并提供动态 Web 内容。
要使 Spring Boot 能够读取和渲染 thymeleaf 模板或 HTML 文件,请将模板放置在src/main/resources/templates中。
然后,Thymeleaf 解析 index.html 文件并使用从控制器类传递的实际值,而不是索引文件中可用的动态值。
此后,一旦 Spring Boot 应用程序运行,您的 Web 浏览器中就会显示一条消息。
org.springframework.boot spring-boot-starter-thymeleaf 描述使用 Spring Initializer 创建 Spring Boot 项目的过程。
Spring Initializr 是一个 Spring Web 工具,允许您通过指定项目详细信息,通过几个步骤创建 Spring Boot 项目。
- 转到Spring intializr并填写输入字段。
- 单击“生成”按钮开始下载项目。
- 从 zip 文件中提取下载的项目并从 IDE 将其打开。从 IDE 中,转至File -> New -> Project from Existing Source -> Spring-boot-app 并选择 pom.xml 文件。单击“导入更改”提示以同步您的项目。之后,请确保转到 application.properties 文件并将 server.port 号编辑为
server.port=7000。 - 现在从src->main->java->com.gfg.Spring.boot.app运行应用程序。
Spring Boot 中的 JPA 是什么?
它是一种 Java 规范,它使用对象关系映射 (ORM) 来管理关系数据,并支持在应用程序中访问 Java 对象或 Java 类与关系数据库之间的数据。
JPA 使用 Java 持久查询语言 (JPQL),这是一种独立于平台、面向对象的查询语言。
JPA 允许您使用 JPA 提供的实体管理器 API 对数据库执行查询处理和对象事务。
什么是 Spring Boot 自动配置?
自动配置尝试使用您添加到应用程序的 jar 依赖项来自动配置 Spring Boot 应用程序。
根据应用程序类路径中的可用依赖项,自动配置会声明 Spring 特定模块(例如 JPA 和 Spring Security)的内置对象。
Spring注解是什么?
Spring 注释引用元数据,该元数据提供有关程序片段的信息并向该程序添加补充数据。代码组件(例如类和方法)通常与注释相关联。
注解不会直接影响程序的行为或编译后的代码的后续行为。
它们的语法以“ @ ”符号开头。
Spring Boot 提供了六种主要的注解类型:
- Spring核心注解
- Spring数据注解
- Spring Bean 注解
- Spring Web 注释
- 春季日程安排注意事项
- Spring Boot 注释
什么是 Spring Data REST?
Spring Data REST REST 使用最少的代码完全公开 Spring Data 资源周围的资源。
以下示例使用 POST 方法来请求内容,使用http://localhost/example作为 URL,使用Content-Type: application/json作为标头。
请求详情:
{
"name": "Jimmy",
"Gender": "Male",
"Age": 23
}回复内容:
{
"name": "Jimmy",
"Gender": "Male",
"Age": 23
"_links": {
"self": {
"href": "http://localhost:8080/example/1"
},
"person": {
"href": "http://localhost:8080/example/1"
}
}
}Spring Boot DevTools 需要什么?
这些是一组高级的预定义工具,其属性应用于相应的开发环境,以促进开发并节省开发时间。
每当您更改 Spring Boot 应用程序中的代码时,Spring Boot DevTools 功能都会自动重新启动。因此,您不必每次更改代码时都手动重新启动应用程序。
什么是弹簧数据?
Spring Data 旨在让开发人员轻松访问关系型和非关系型数据、基于云的数据服务和其他数据访问技术,同时继续保留底层数据存储的特殊特性。
当 bean 存在时,如何告诉它停止自动配置?
这里我们使用带有 name 和 value 属性的 @ConditionalOnMissingBean 注释,如下所示:
- value 属性存储要检查的 bean 类型。
- name 属性指定要检查的 bean 的名称
如何在 Spring Boot 中从数据库获取数据?
您可以使用以下步骤将数据从 MySQL 数据库访问到 Spring Boot 应用程序。
步骤 1:使用create DATABASE person命令在 MySQL 中创建数据库。
步骤2:在数据库中创建表。
CREATE TABLE person(id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(255));步骤 3:创建 Spring Boot 应用程序并向其添加 JDBC、MySQL 和所需的 Web 依赖项。
步骤 4:从 application.properties 文件配置数据库,如下所示。
spring.datasource.url=jdbc:mysql://localhost:3306/personDetails
spring.datasource.username=example123
spring.datasource.password=example123
spring.jpa.hibernate.ddl-auto=create-drop第 5 步:现在让我们在控制器类中处理请求。
package com.person;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class JdbcController {
@Autowired
JdbcTemplate jdbc;
@RequestMapping("/save")
public String index(){
jdbc.execute("insert into person (name)values(Trial)");
return "Name entered Successfully";
}
}最后,运行应用程序检查数据库条目以查看访问的数据。
为什么我们需要 Spring 配置文件?
Spring 配置文件允许您出于特定的开发目的分离应用程序不同部分的配置。
当 Spring 配置文件不可用时,Spring 配置文件还可以帮助开发人员免去管理特定于环境的外部配置的麻烦。
此外,这使得保持同步变得更加困难,并且更需要创建几个类似工厂的组件,这些组件根据特定环境的参数来利用特定的需求。
我可以更改Spring Boot中嵌入式Tomcat服务器的端口吗?
是的,你可以。
为此,请操作application.properties文件以包含server.port属性并为其分配您选择的端口。 Spring Boot 自动加载应用程序的属性文件并将所需的配置应用到您的应用程序。
例如,您可以将server.port号从默认值 8080 更改为server.port= 8081 。
如何配置 Log4j 进行日志记录?
您可以通过几个简单的步骤配置 Log4j 进行日志记录:
- 首先,创建一个Java项目并右键单击该项目。转到MyEclipse -> File -> New -> Java Project,为项目命名,然后单击 Finish。
- 然后右键单击 Java 项目名称并选择“构建路径”->“配置构建路径”。在此步骤中,您将添加 log4j 文件。
- 转到“库”,单击“添加外部 JARS”按钮,然后从出现的下拉菜单中选择您的 log4j 文件。然后单击“确定”。
- 创建一个名为log4j.properties文件的新 Java 文件,然后单击 Finish 将此文件添加到类路径中。
- 从类路径中,单击“高级”,选择“添加文件夹”选项,然后记住单击“确定”。
- 现在您可以找到 log4j.properties 文件并单击“确定”来运行该项目。
- 检查控制台中的以下输出。
[main] DEBUG Example – Hello this is a debug message
[main] INFO Example – Hello this is an info message什么是 IoC 容器?
IoC(控制反转)容器是Spring的核心容器,自动实现依赖注入。它实例化类的应用程序,并负责配置对象和组装必要的依赖项。
它还管理对象从实例化到销毁的生命周期。
IoC 使用 Java 代码、XML 和 Java 注释的元数据配置来执行这些任务。
之所以称为控制反转,是因为容器控制着 Java 对象以及这些对象的生命周期。否则,这是开发人员的任务。
描述如何使用 Maven 创建 Spring Boot 应用程序
这个过程需要一系列步骤。
第一步:选择项目类型。
步骤 2:命名并配置您的项目,然后单击“完成”按钮创建项目。
步骤3:接下来,配置Maven项目的pom.xml文件以从中创建Spring Boot项目。
pom.xml 文件:
<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.javatpoint</groupId>
<artifactId>spring-boot-example</artifactId>
<version>0.0.1-SNAPS<name>JavaTpoint Spring Boot Example</name>
</project> 此配置涉及向您的 Maven 项目添加父项目。这将 Maven 项目声明为父项目的子项目。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
</parent> 步骤 4:接下来,将 Web 依赖项 spring-boot-starter-web 添加到 pom.xml 中。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies> 第 5 步:添加项目的 Java 版本。
<properties>
<java.version>1.8</java.version>
</properties> 第 6 步:请记住,每次添加新依赖项时都需要更新 Maven 项目。
步骤 7:在src/main/java 包中创建一个 Java 类,使您的 Maven 项目可执行。
第 8 步:接下来,调用 Spring 应用程序类的静态 run 方法。
步骤 9:最后,将该类作为 Java 应用程序运行。
Spring Boot相对于Spring有哪些优势?
- Spring Boot 的引导功能,使用引导初始化程序来编译源语言(一种称为引导的技术),可以节省用户设备上的空间并减少应用程序加载时间。
- 与 Spring 不同,Spring Boot 允许您在添加 spring-boot-dependency 后管理依赖项,而不依赖于父 POM(父对象模型)或 XML 文件。
- Spring Boot还允许开发人员使用注解或XML配置来代替使用XML配置。
- 开发人员更喜欢 Spring Boot,因为它需要更少的样板代码来设置应用程序。这是因为 Spring Boot 带有内存数据库和内置 Tomcat 服务器,减少了样板代码。另一方面,Spring 有更多的样板代码。
- Spring Boot不一定需要WAR(Web应用程序资源)文件,它只能依赖JAR(Java资源)。 JAR(Java 资源)对于用户和开发人员来说更加方便,因为它们具有更小、更简单的结构。
- Spring Boot 还自动包含 Tomcat 和 Jetty 等服务器。因此,开发人员不必像使用 Spring 那样手动设置服务器。
如何使用 Spring Boot 进行分页?
分页过程将数据划分为多个部分以节省资源。这需要两个字段:页面大小和页码。
这个过程包括几个步骤:
第 1 步:初始设置
要配置实体,请将其命名为“Person”作为域类。
@Entity
public class Person {
@Id
private long id;
private String name;
}第 2 步:创建存储库
接下来,使用PagingAndSortingRepository extends PersonRepository以便您可以分别获取用于分页和排序的findAll(Pageable pageable ) 和findAll(Sort sort)方法。
public interface PersonRepository extends PagingAndSortingRepository<Person, Integer> {
List<Product> findAllByPrice(double price, Pageable pageable);
}第三步:分页步骤
这里的第一步涉及创建一个PageRequest对象。通过根据请求传递页码和页面大小来实现Pageable接口。
Pageable firstPageWithTwoElements = PageRequest.of(0,2);
Pageable secondPageWithThreeElements = PageRequest.of(1,3);然后将此PageRequest对象作为参数传递给存储库方法。
Page<Person> allProducts = personRepository.findAllByPrice(findPageWithTwoElements);
List<Items> allTwoDollarItems = itemsRepository.findAllByPrice(2, secondPageThreeElements) 默认情况下, findAll(Pageable pageable)方法返回Page<T>对象。
描述如何注册自定义自动配置
@EnableAutoConfiguration key 指定 META-INF/spring.factories 文件下的完全限定名称。在此步骤中,您将注册一个自动配置类。
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.baeldung.autoconfigure.CustomAutoConfiguration要使用 Maven 构建项目,您需要将文件放置在resources/META-INF目录中。
Spring Boot 中的引导是什么?
Bootstrapping是Spring Boot应用程序启动时执行逻辑的过程。
BootInitializr 使用 Spring Boot 编译源语言。此过程可以节省设备空间,还可以减少应用程序加载时间。
最后的话👨💻
好吧,在本文中,我们讨论了面试官在面试过程中可能会问的 Spring Boot 问题以及将帮助您自信地通过面试的答案。我希望你能得到那份梦想的工作!
你还可以从Java面试时提出的问题中学到一些相关的技巧。
祝你好运!




![2021 年如何设置 Raspberry Pi Web 服务器 [指南]](https://i0.wp.com/pcmanabu.com/wp-content/uploads/2019/10/web-server-02-309x198.png?w=1200&resize=1200,0&ssl=1)

