22個常見的Spring Boot面試問題和答案
已發表: 2022-11-10您是一名 Java Spring Boot 開發人員,期待參加即將到來的面試,但不確定會出現哪些問題? 我們是來幫忙的!
本文將概述幾個常見的 Spring Boot 面試問題和答案,面試官可以用來測試你,從而幫助你做好充分的準備。
面試官使用策略性 Java Spring Boot 問題來測試面試者與其指定角色相關的技能水平。 因此,您需要準備相關問題並知道如何回答。
在直接跳到面試問題及其相應答案之前,讓我們先簡要介紹一下 Spring Boot 是什麼以及它對 Java 開發人員有多大幫助。
什麼是 Java Spring Boot?
這個 Java 框架是關鍵團隊在 2014 年創建的。Spring Boot 是一個開源框架,可以高效地開發獨立的、生產級的應用程序,並且還可以在 Java 虛擬機(JVM)上運行。
Java 開發人員更喜歡它用於 Web 應用程序和微服務開發,因為它具有快速簡便的設置過程和安全的配置時間。
Spring Boot 可以通過其三個核心功能輕鬆設置和配置基於 Spring 的應用程序,其中包括:
- 自動配置——這是 Spring 應用程序的自動配置。
- Spring Boot 為要使用的配置默認值和為所需依賴項安裝的包提供了一種自以為是的方法。 這種固執己見的方法有助於快速設置項目。
- Sprsetupoot 讓您無需網絡服務器即可獨立運行您的應用程序。
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 Bean 和數據庫事務的靈活配置是其他有用的特性。
因此,既然您對 Spring Boot 有了基本的了解,讓我們考慮一些常見的 Spring Boot 面試問題和答案,它們將幫助您準備面試。
Spring Boot 面試問答

Spring Boot 有哪些特點?
其中一些受歡迎的功能包括:
- Spring Boot CLI 提供了 Groovy 用於編寫 Spring Boot 應用程序; 從長遠來看,避免了樣板代碼。
- Spring Boot 提供日誌記錄和安全功能,可以輕鬆保護您的應用程序免受潛在的安全威脅。
- 它為您的項目提供相關組件的自動配置,從而避免不必要的 WAR 文件的風險。
- starter Initializer 為您設置了默認的內部項目結構。 這樣,您不必手動設置項目結構。
- Spring Boot 執行器功能允許在應用程序運行時訪問洞察力和指標。
- 當然,Spring Boot 的一項關鍵特性 Starter Dependency 有助於聚合特定特性的常用依賴項。
什麼是 Spring Boot 啟動器?
Spring Boot 啟動器是依賴描述符,其中包括一組啟用應用程序依賴項的依賴項管理提供程序。 它們為框架提供了自動依賴解析。 啟動器增強了輕鬆快速的開發。
Spring Boot 中的 Actuator 是什麼,它的優點是什麼?
執行器是 Spring Boot 功能之一,可讓您在應用程序運行時監控應用程序內部發生的情況。
例如,在調試期間,您可以使用執行器來分析日誌,因為它允許訪問 CPU 使用率和 bean 標識等功能。
此外,執行器不僅可以輕鬆訪問生產就緒的 REST 端點,這些端點可以監控和管理信息,還可以從 Web 檢索數據。
什麼是百里香,以及如何使用百里香?
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 sources -> 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 允許使用它提供的 Entity Manager API 對數據庫進行查詢處理和對象事務。
Spring Boot 中的自動配置是什麼?
自動配置旨在使用您添加到應用程序的 jar 依賴項來自動化 Spring Boot 應用程序配置。
根據應用程序的 Classpath 中可用的依賴項,自動配置將聲明特定於 spring 的模塊的內置對象,包括 JPA 和 spring security 等。
什麼是 Spring 註解?
Spring 註釋指的是提供有關程序片段的信息的元數據,它們向該程序添加補充數據。 代碼組件(包括類和方法)通常與註釋相關聯。
註解不會直接影響程序的運行或編譯後的代碼的後續操作。
它們的語法以“ @ ”符號開頭。
Spring Boot 提供了六種主要的註解類型,包括:
- Spring 核心註解
- Spring 數據註解
- Spring Bean 註解
- Spring Web 註釋
- Spring 調度註解
- Spring Boot 註解
Spring Data REST 是什麼意思?
Spring Data REST 使用最少的代碼以 RESTful 形式公開 Spring Data Resources 周圍的資源。
以下示例使用 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 存在時,如何告訴自動配置退出?
在這裡,您將使用 @ConditionalOnMissingBean 註釋,其中包括如下的名稱和值屬性。
- value 屬性存儲要檢查的 bean 類型
- 命名要檢查的 bean 的 name 屬性
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 Profiles?
Spring Profiles 允許分離應用程序的不同部分的配置,並將它們用於特定的開發。
如果 Spring Profiles 不可用,Spring Profiles 還為開發人員節省了管理特定於環境的外部配置的痛苦。
此外,這將使保持同步變得困難,並且意味著額外需要編寫幾個類似工廠的組件,這些組件將根據特定的環境特定參數來利用某些必需的東西。
我們可以在 Spring boot 中更改嵌入式 Tomcat 服務器的端口嗎?
我們可以。
這是通過操作application.properties文件以包含server.port
屬性並為其分配您選擇的端口來完成的。 Spring Boot 會自動加載應用程序屬性文件並將所需的配置應用於應用程序。
例如,您可以將server.port
編號從默認值 8080 更改為server.port= 8081
。
如何配置 Log4j 進行日誌記錄?
通過這幾個簡單的步驟,我們可以配置 Log4j 進行日誌記錄:
- 首先,創建您的 Java 項目,然後右鍵單擊該項目。 導航到MyEclipse->File->New->Java Project以命名項目並單擊完成。
- 接下來,右鍵單擊您的 Java 項目名稱並選擇 Build Path -> Configure Build Path。 此步驟將添加 log4j 文件。
- 導航到庫並單擊Add External JARS按鈕,然後從出現的下拉菜單中選擇 log4j 文件。 然後單擊確定。
- 創建一個新的 java 文件,您將調用log4j.properties文件,然後單擊完成並將此文件添加到 Classpath。
- 從 Classpath 中單擊 Advanced,然後選擇Add Folders 選項,並記住單擊 OK。
- 您現在可以搜索 log4j.properties 文件,單擊 OK,然後運行該項目。
- 檢查控制台以獲取以下輸出。
[main] DEBUG Example – Hello this is a debug message [main] INFO Example – Hello this is an info message
什麼是 IoC 容器?
IoC(Inversion of Control)容器是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>
第六步:注意每次添加新的依賴,都需要更新Maven項目。
第 7 步:通過在src/main/java 包中創建一個 Java 類,使 Maven 項目可運行。
步驟 8:接下來,調用 Spring Application 的類靜態運行方法。
第 9 步:最後,將該類作為 Java 應用程序運行。
Spring Boot 與 Spring 相比有哪些優勢?
- Spring Boot 使用 Boot 初始化程序編譯源語言的引導功能(一種稱為引導的技術)可以節省用戶設備上的空間並減少應用程序的加載時間。
- 與 Spring 不同的是,Spring Boot 允許在添加 spring-boot-dependencies 後進行依賴管理,而不依賴於父 POM(父對像模型)或 XML 文件。
- Spring Boot 還允許開發人員使用註解或 XML 配置,而無需使用 XML 配置。
- 開發人員更喜歡 Spring Boot,因為它減少了設置應用程序所需的樣板代碼。 這是因為 Spring Boot 帶有一個內存數據庫和一個嵌入式 Tomcat 服務器,從而減少了樣板代碼。 另一方面,Spring 有更多樣板代碼。
- Spring Boot 不一定需要 WAR(web application resource) 文件,只能依賴 JAR(Java Resource),JAR(Java Resource) 結構更小更簡單,因此對用戶和開發者更有用。
- Spring Boot 還會自動嵌入 Tomcat 和 Jetty 等服務器; 因此,開發人員不需要像在 Spring 中那樣手動設置服務器。
如何在 Spring Boot 中進行分頁?
分頁過程將數據分成多個部分以節省資源。 它需要兩個字段,頁面大小和頁碼。
該過程涉及幾個步驟,包括:
第 1 步:初始設置
Consisetupn 實體,我們將 Person 命名為域類。
@Entity public class Person { @Id private long id; private String name; }
步驟 2:存儲庫創建
接下來,使用PersonRepository
extends
PagingAndSortingRepository
以分別獲取用於分頁和排序的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 鍵 META-INF/spring.factories 文件下,提及完全限定名稱。 此步驟註冊自動配置類。
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.baeldung.autoconfigure.CustomAutoConfiguration
使用 Maven 構建項目需要您將文件放在resources/META-INF目錄中。
Spring Boot 中的引導是什麼?
Bootstrapping 是在啟動時在 Spring Boot 應用程序中執行邏輯的過程。
Boot initializr 在 Spring Boot 中編譯源語言。 這個過程節省了設備空間,也減少了應用程序的加載時間。
最後的話
好吧,這篇文章涵蓋了面試官在面試期間可能會問你的一些 Spring Boot 問題,以及幫助你自信地應對它的答案。 我們希望你能找到夢想的工作!
您可能還想從 Java 面試中提出的問題中學習一些相關的技巧。
祝你好運!