国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

30 多個(gè)Spring Boot面試問題及答案

歡迎來到我們詳盡的 Spring Boot 面試問題指南!Spring Boot 由于其易用性和開發(fā) Java 應(yīng)用程序的生產(chǎn)力提升而在 Java 生態(tài)系統(tǒng)中越來越受歡迎。這篇文章將為您提供一組經(jīng)常被要求的 Spring Boot 面試問題,以幫助您在面試中取得好成績,無論您是發(fā)現(xiàn) Spring Boot 的新手還是準(zhǔn)備面試的經(jīng)驗(yàn)豐富的開發(fā)人員。

什么是 Spring Boot?

什么是 Spring Boot?

Spring Boot 是一個(gè)構(gòu)建在 Spring 框架之上的開源 Java 框架。Spring Boot 旨在以最少的設(shè)置和配置更輕松地創(chuàng)建獨(dú)立的、可用于生產(chǎn)的應(yīng)用程序。

Spring Boot 的主要優(yōu)點(diǎn)是什么?

Spring Boot 為 Java 應(yīng)用程序開發(fā)提供了幾個(gè)顯著的優(yōu)勢。一些主要優(yōu)勢包括:

  1. 簡化配置:Spring Boot 通過提供合理的默認(rèn)值和自動配置來消除手動配置的需要。它減少了樣板代碼,使開發(fā)人員能夠更加專注于業(yè)務(wù)邏輯。

  2. 快速應(yīng)用程序開發(fā):Spring Boot 提供了一系列提高生產(chǎn)力的功能,例如嵌入式服務(wù)器、自動依賴管理和熱重加載。這些功能加速了開發(fā)并縮短了上市時(shí)間。

  3. 固執(zhí)己見的方法:Spring Boot 遵循固執(zhí)己見的方法,提供預(yù)定義的約定和最佳實(shí)踐。它促進(jìn)一致性并減少做出配置決策的認(rèn)知負(fù)擔(dān)。

  4. 微服務(wù)友好:Spring Boot與Spring Cloud無縫集成,方便微服務(wù)架構(gòu)的開發(fā)。它為服務(wù)發(fā)現(xiàn)、分布式配置、負(fù)載平衡等提供內(nèi)置支持。

  5. 生產(chǎn)就緒功能:Spring Boot Actuator 提供了一組用于監(jiān)控、運(yùn)行狀況檢查、指標(biāo)和安全性的生產(chǎn)就緒功能。它使開發(fā)人員能夠深入了解應(yīng)用程序性能并輕松監(jiān)控系統(tǒng)運(yùn)行狀況。

  6. 嵌入式服務(wù)器:Spring Boot 附帶 Tomcat、Jetty 和 Undertow 等嵌入式服務(wù)器。這消除了手動服務(wù)器設(shè)置和配置的需要。

  7. 自動配置:Spring Boot 的自動配置功能會根據(jù)類路徑依賴項(xiàng)自動配置應(yīng)用程序。它簡化了設(shè)置過程并減少了手動配置工作。

  8. 社區(qū)支持:Spring Boot 擁有一個(gè)龐大且活躍的開發(fā)者社區(qū)。這意味著有大量的資源、文檔和社區(qū)支持可用于故障排除和共享最佳實(shí)踐。

  9. 生態(tài)系統(tǒng)集成:Spring Boot 與其他 Spring 項(xiàng)目和第三方庫無縫集成。它利用強(qiáng)大的 Spring 生態(tài)系統(tǒng),允許開發(fā)人員利用各種工具和庫來實(shí)現(xiàn)各種目的。

  10. 可測試性:Spring Boot 為測試提供了出色的支持,包括單元測試、集成測試和端到端測試。它提供了測試切片、模擬對象以及針對不同測試框架的輕松配置等功能。

Spring Boot 的關(guān)鍵組件有哪些?

Spring Boot 整合了多個(gè)關(guān)鍵組件,這些組件協(xié)同工作以提供簡化且高效的開發(fā)體驗(yàn)。Spring Boot 的主要組件是:

  1. 自動配置:Spring Boot 的自動配置功能會根據(jù)在類路徑上檢測到的依賴項(xiàng)自動配置應(yīng)用程序。它消除了手動配置的需要并減少了樣板代碼。

  2. Starter依賴項(xiàng):Spring Boot提供了一組starter依賴項(xiàng),它們是預(yù)先打包的依賴項(xiàng),可以方便配置常見用例。Starters 簡化了依賴關(guān)系管理,并幫助開發(fā)人員快速開始使用 Web 應(yīng)用程序、數(shù)據(jù)訪問、安全性、測試等基本功能。

  3. 嵌入式服務(wù)器:Spring Boot 包括嵌入式 servlet 容器,例如 Tomcat、Jetty 和 Undertow。這些嵌入式服務(wù)器允許開發(fā)人員將應(yīng)用程序打包為可執(zhí)行 JAR 文件,從而簡化部署并使應(yīng)用程序獨(dú)立。

  4. Spring Boot Actuator:Spring Boot Actuator 提供用于監(jiān)視和管理應(yīng)用程序的生產(chǎn)就緒功能。它提供用于運(yùn)行狀況檢查、指標(biāo)、日志記錄、跟蹤等的端點(diǎn)。該執(zhí)行器可以輕松監(jiān)控和管理生產(chǎn)環(huán)境中的應(yīng)用程序。

  5. Spring Boot CLI: Spring Boot 命令行界面 (CLI) 允許開發(fā)人員使用命令行界面與 Spring Boot 應(yīng)用程序進(jìn)行交互。它提供了一種快速原型化、開發(fā)和測試 Spring Boot 應(yīng)用程序的便捷方法,無需復(fù)雜的設(shè)置和配置。

  6. Spring Boot DevTools:Spring Boot DevTools 是一組增強(qiáng)開發(fā)體驗(yàn)的工具。它包括自動應(yīng)用程序重新啟動、靜態(tài)資源實(shí)時(shí)重新加載和增強(qiáng)的錯誤報(bào)告等功能。DevTools 顯著提高了開發(fā)人員的工作效率并加快了開發(fā)過程。

  7. Spring Boot 測試:Spring Boot 為測試應(yīng)用程序提供了出色的支持。它提供了各種測試實(shí)用程序,包括測試切片、模擬對象以及針對不同測試框架的簡單配置。Spring Boot 測試使 Spring Boot 應(yīng)用程序的編寫和執(zhí)行測試變得更加容易。

Spring 和 Spring Boot 有什么區(qū)別?

Spring 和 Spring Boot 的比較如下:

特征SpringSpring Boot
配置需要手動配置提供自動配置和合理的默認(rèn)值
依賴管理手動依賴管理通過啟動器簡化依賴管理
XML配置嚴(yán)重依賴 XML 配置鼓勵使用注釋和Java配置
嵌入式服務(wù)器需要手動設(shè)置和配置包括嵌入式服務(wù)器,易于部署
自動配置自動配置功能有限強(qiáng)大的自動配置,快速開發(fā)
開發(fā)時(shí)間更長的開發(fā)設(shè)置和配置通過開箱即用的默認(rèn)設(shè)置加快開發(fā)速度
約定優(yōu)于配置強(qiáng)調(diào)配置強(qiáng)調(diào)約定優(yōu)于配置
微服務(wù)支持支持微服務(wù)架構(gòu)提供與 Spring Cloud 的無縫集成
測試支持Spring Test 提供強(qiáng)大的測試支持Spring Boot Test 增強(qiáng)了測試支持
執(zhí)行器執(zhí)行器可作為單獨(dú)的模塊使用執(zhí)行器集成到核心框架中

需要注意的是,Spring 和 Spring Boot 并不相互排斥。Spring Boot 構(gòu)建在 Spring 框架之上,并提供了額外的功能來簡化和加速 Spring 應(yīng)用程序開發(fā)。 

注釋的目的是什么@SpringBootApplication?

該@SpringBootApplication注釋結(jié)合了其他三個(gè)常用注釋:@Configuration、@EnableAutoConfiguration和@ComponentScan。這個(gè)單一注釋允許對應(yīng)用程序進(jìn)行簡潔和簡化的配置。

該@SpringBootApplication注釋通常放置在 Spring Boot 應(yīng)用程序的主類上。它充當(dāng)應(yīng)用程序的入口點(diǎn)并引導(dǎo) Spring Boot 運(yùn)行時(shí)環(huán)境。

什么是 Spring Boot 啟動器?

Spring Boot 啟動器是預(yù)先配置的依賴項(xiàng)的精選集合,可簡化 Spring Boot 應(yīng)用程序中特定功能的設(shè)置和配置。它們提供必要的依賴項(xiàng)、合理的默認(rèn)配置和自動配置。 

例如, spring-boot-starter-web 啟動器包含與 Web 相關(guān)的庫的依賴項(xiàng),并提供用于處理 Web 請求的默認(rèn)配置。初學(xué)者簡化了依賴關(guān)系管理并確保所需的組件無縫地協(xié)同工作。 

通過在項(xiàng)目中包含啟動器,您可以避免手動配置,從而節(jié)省時(shí)間和精力,并獲得 Spring Boot 固執(zhí)己見的應(yīng)用程序開發(fā)方法的好處。

常用 Spring Boot 啟動器示例

以下是一些常用 Spring Boot 啟動器的示例:

  1. spring-boot-starter-web:該啟動器用于使用 Spring MVC 開發(fā) Web 應(yīng)用程序。它包括處理 HTTP 請求、管理 Web 會話和提供靜態(tài)資源的依賴項(xiàng)。

  2. spring-boot-starter-data-jpa:此啟動器使用 Java Persistence API (JPA) 提供數(shù)據(jù)訪問支持,并使用 Hibernate 作為默認(rèn)實(shí)現(xiàn)。它包括數(shù)據(jù)庫連接、實(shí)體管理和事務(wù)管理的依賴關(guān)系。

  3. spring-boot-starter-security:此啟動器用于向 Spring Boot 應(yīng)用程序添加安全功能。它包括身份驗(yàn)證、授權(quán)和安全通信的依賴項(xiàng)。

  4. spring-boot-starter-test:此啟動器用于在 Spring Boot 應(yīng)用程序中編寫單元測試和集成測試。它包括 JUnit、Mockito 和 Spring Test 等測試框架的依賴項(xiàng)。

  5. spring-boot-starter-actuator:此啟動器添加了生產(chǎn)就緒功能來監(jiān)視和管理應(yīng)用程序。它包括用于運(yùn)行狀況檢查、指標(biāo)、日志記錄等的端點(diǎn)。

  6. spring-boot-starter-data-redis:該啟動器用于使用 Redis(一種內(nèi)存數(shù)據(jù)存儲)。它包括連接Redis服務(wù)器和執(zhí)行數(shù)據(jù)操作的依賴項(xiàng)。

  7. spring-boot-starter-amqp:此啟動器提供對高級消息隊(duì)列協(xié)議 (AMQP) 消息傳遞的支持。它包括 RabbitMQ 等消息傳遞組件的依賴項(xiàng)。

  8. spring-boot-starter-mail:此啟動器用于在 Spring Boot 應(yīng)用程序中發(fā)送電子郵件。它包括電子郵件相關(guān)功能的依賴項(xiàng)。

  9. spring-boot-starter-cache:此啟動器提供對 Spring Boot 應(yīng)用程序中緩存數(shù)據(jù)的支持。它包括 Ehcache 和 Redis 等緩存框架的依賴項(xiàng)。

  10. spring-boot-starter-oauth2-client:此啟動器用于在 Spring Boot 應(yīng)用程序中實(shí)現(xiàn) OAuth 2.0 客戶端功能。它包括與 OAuth 2.0 授權(quán)服務(wù)器交互的依賴項(xiàng)。

Spring Boot 入門者的完整列表可以在 Spring Boot 官方網(wǎng)站上找到。以下是官方 Spring Boot Starters 文檔的鏈接:Spring Boot Starters。(https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter)

Spring Boot 使用的默認(rèn)嵌入式服務(wù)器是什么?

Spring Boot 使用的默認(rèn)嵌入式服務(wù)器是 Apache Tomcat。spring-boot-starter-webSpring Boot 包含 Tomcat 作為依賴項(xiàng),并在您使用啟動器或任何其他與 Web 相關(guān)的啟動器時(shí)自動將其配置為默認(rèn)嵌入式服務(wù)器。

如何在 Spring Boot 應(yīng)用程序中配置屬性?

在 Spring Boot 應(yīng)用程序中,可以使用各種方法配置屬性。以下是常用的方法:

  1. application.properties 或 application.yml 文件application.properties:Spring Boot 允許您在文件(對于鍵值格式的屬性)或文件application.yml(對于 YAML 格式的屬性) 中定義配置屬性。

  2. 命令行參數(shù):Spring Boot 支持使用命令行參數(shù)配置屬性。--property=value運(yùn)行應(yīng)用程序時(shí),您可以按以下格式將屬性作為命令行參數(shù)傳遞。例如:java -jar myapp.jar --server.port=8080.

  3. 環(huán)境變量:Spring Boot 可以從環(huán)境變量中讀取屬性。您可以使用屬性名稱和值定義環(huán)境變量,Spring Boot 會自動將它們映射到相應(yīng)的屬性。 

  4. 系統(tǒng)屬性:Spring Boot還支持使用系統(tǒng)屬性配置屬性。您可以在運(yùn)行應(yīng)用程序時(shí)使用該標(biāo)志將系統(tǒng)屬性傳遞給應(yīng)用程序-D。例如:java -jar myapp.jar -Dserver.port=8080.

  5. @ConfigurationProperties 注解:Spring Boot 提供了該@ConfigurationProperties注解,它允許您將外部屬性直接綁定到 Java 對象。您可以定義一個(gè)帶注釋的配置類@ConfigurationProperties,并指定要綁定的屬性的前綴。Spring Boot會自動將屬性映射到配置類的相應(yīng)字段。

什么是 Spring Boot 自動配置,它是如何工作的?

Spring Boot 自動配置會根據(jù)類路徑依賴項(xiàng)自動配置應(yīng)用程序上下文,從而減少手動配置的需要。它掃描類路徑以查找所需的庫并設(shè)置必要的 bean 和組件。自動配置遵循預(yù)定義的規(guī)則,并使用@ConditionalOnClass和等注釋@ConditionalOnMissingBean來選擇性地啟用配置。通過添加@EnableAutoConfiguration向主應(yīng)用程序類添加注解,Spring Boot 會觸發(fā)自動配置過程。自動配置類通常打包在啟動器中,其中包含必要的配置類和依賴項(xiàng)。在項(xiàng)目中包含啟動器使 Spring Boot 能夠自動配置相關(guān)組件。

Spring Boot 自動配置的好處包括:

  1. 減少樣板代碼:自動配置消除了手動配置的需要,減少了設(shè)置常用功能所需的樣板代碼量。

  2. 自以為是的默認(rèn)值:自動配置根據(jù)最佳實(shí)踐提供合理的默認(rèn)值和約定。這使得開發(fā)人員可以快速上手 Spring Boot 項(xiàng)目,而無需花費(fèi)時(shí)間進(jìn)行手動配置。

  3. 與第三方庫集成:自動配置與流行的庫和框架無縫集成,自動配置其使用所需的必要bean和組件。

  4. 條件配置:自動配置根據(jù)特定類或 bean 是否存在有條件地應(yīng)用配置。這可確保避免配置沖突,并且僅應(yīng)用相關(guān)配置。

如何使用 Spring Initializer 創(chuàng)建 Spring Boot 應(yīng)用程序?

使用 Spring Initializr 可以輕松創(chuàng)建 Spring Boot 應(yīng)用程序。Spring Initializr 是一個(gè)基于 Web 的工具,可生成項(xiàng)目模板,其中包含 Spring Boot 應(yīng)用程序的所有必要依賴項(xiàng)和配置。

要使用 Spring Initializr 輕松創(chuàng)建 Spring Boot 應(yīng)用程序,您可以按照以下步驟操作:

  1. 訪問 Spring Initializr 網(wǎng)站:訪問 Spring Initializr 官方網(wǎng)站:start.spring.io。

  2. 配置項(xiàng)目設(shè)置:在 Spring Initializr 網(wǎng)站上,您將找到用于配置項(xiàng)目的各種選項(xiàng)。提供以下詳細(xì)信息:

    • 項(xiàng)目:選擇項(xiàng)目類型(Maven 或 Gradle)。

    • 語言:選擇編程語言(Java 或 Kotlin)。

    • Spring Boot 版本:選擇所需的 Spring Boot 版本。

    • 項(xiàng)目元數(shù)據(jù):指定項(xiàng)目的組、工件和包名稱。

  3. 添加依賴項(xiàng):在“依賴項(xiàng)”部分中,您可以搜索并選擇項(xiàng)目所需的依賴項(xiàng)。Spring Initializr 提供了廣泛的選項(xiàng),例如 Spring Web、Spring Data JPA、Spring Security 等。您還可以在搜索欄中搜索特定的依賴項(xiàng)。

  4. 生成項(xiàng)目:配置項(xiàng)目設(shè)置并添加所需的依賴項(xiàng)后,單擊“生成”按鈕。Spring Initializr 將根據(jù)您的選擇生成可下載的項(xiàng)目存檔(ZIP 文件)。

  5. 解壓項(xiàng)目:下載生成的 ZIP 文件并將其解壓到計(jì)算機(jī)上所需的位置。

  6. 在 IDE 中導(dǎo)入項(xiàng)目:打開您的首選 IDE(例如 IntelliJ IDEA、Eclipse 或 Visual Studio Code)并將提取的項(xiàng)目作為 Maven 或 Gradle 項(xiàng)目導(dǎo)入。

  7. 開始開發(fā):導(dǎo)入項(xiàng)目后,您可以開始開發(fā) Spring Boot 應(yīng)用程序。添加您的應(yīng)用程序邏輯,創(chuàng)建控制器、服務(wù)、存儲庫和其他必要的組件來實(shí)現(xiàn)您所需的功能。

  8. 運(yùn)行應(yīng)用程序:使用 IDE 的運(yùn)行配置或命令行工具來運(yùn)行 Spring Boot 應(yīng)用程序。應(yīng)用程序?qū)樱梢允褂锰峁┑?URL 或端點(diǎn)訪問它。

什么是 Spring Boot 執(zhí)行器?什么是不同的執(zhí)行器端點(diǎn)?

Spring Boot Actuators 是 Spring Boot 框架提供的一組生產(chǎn)就緒的管理和監(jiān)控工具。它們使您能夠在運(yùn)行時(shí)監(jiān)視 Spring Boot 應(yīng)用程序并與之交互,從而提供有關(guān)其運(yùn)行狀況、指標(biāo)和其他各個(gè)方面的寶貴見解。

執(zhí)行器公開一組 RESTful 端點(diǎn),允許您訪問有用的信息并在 Spring Boot 應(yīng)用程序上執(zhí)行某些操作。一些常用的端點(diǎn)包括:

  1. /actuator/health:提供有關(guān)應(yīng)用程序運(yùn)行狀況的信息,指示它是否已啟動并運(yùn)行或遇到任何問題。

  2. /actuator/info:顯示有關(guān)應(yīng)用程序的一般信息,可以對其進(jìn)行自定義以包括版本、描述和其他相關(guān)元數(shù)據(jù)等詳細(xì)信息。

  3. /actuator/metrics:提供有關(guān)應(yīng)用程序各個(gè)方面的指標(biāo),例如內(nèi)存使用情況、CPU 使用情況、請求/響應(yīng)時(shí)間等。這些指標(biāo)有助于監(jiān)控和性能分析。

  4. /actuator/env:顯示當(dāng)前環(huán)境屬性及其值,包括來自外部源(如 application.properties 或環(huán)境變量)的配置屬性。

  5. /actuator/loggers:允許您動態(tài)查看和修改應(yīng)用程序記錄器的日志記錄級別。這對于故障排除和調(diào)試目的非常有用。

  6. /actuator/mappings:顯示應(yīng)用程序公開的所有端點(diǎn)的詳細(xì)映射,包括每個(gè)端點(diǎn)支持的 HTTP 方法。

  7. /actuator/beans:提供應(yīng)用程序中所有 Spring beans 的完整列表,包括它們的名稱、類型和依賴項(xiàng)等信息。

解釋 Spring Boot 配置文件的概念及其使用方法

Spring Boot 配置文件提供了一種管理不同環(huán)境或部署場景的應(yīng)用程序配置的方法。通過配置文件,您可以為開發(fā)、測試、生產(chǎn)和任何其他特定環(huán)境定義不同的配置集。

以下是 Spring Boot 配置文件如何工作以及如何使用它們的簡要說明:

  1. 定義配置文件:在 Spring Boot 應(yīng)用程序中,您可以通過為每個(gè)環(huán)境創(chuàng)建單獨(dú)的屬性文件來定義配置文件。例如,您可以將其application-dev.properties用于開發(fā)環(huán)境、application-test.properties測試環(huán)境和application-prod.properties生產(chǎn)環(huán)境。

  2. 激活配置文件:可以通過多種方式激活配置文件:

    • 通過在啟動應(yīng)用程序時(shí)將屬性設(shè)置spring.profiles.active為application.properties命令行參數(shù)或?qū)⑵湓O(shè)置為命令行參數(shù)。

    • 通過@ActiveProfiles在測試中使用類級別的注釋。

    • 通過使用系統(tǒng)環(huán)境變量或 JVM 系統(tǒng)屬性來指定活動配置文件。

  3. 配置文件特定的配置:一旦激活配置文件,Spring Boot 將加載相應(yīng)的屬性文件并應(yīng)用其中定義的配置。例如,如果dev配置文件處于活動狀態(tài)。Spring Boot 將加載該application-dev.properties文件并應(yīng)用其中定義的配置。

  4. 覆蓋配置:特定于配置文件的配置可以覆蓋application.properties或其他屬性文件中定義的默認(rèn)配置。這允許您專門針對每個(gè)環(huán)境自定義某些設(shè)置,而無需修改核心應(yīng)用程序代碼。

  5. Bean 和組件掃描:配置文件還可以用于控制 Bean 和組件掃描過程。您可以使用 來注釋 bean 或組件,@Profile以指定它們僅應(yīng)在特定配置文件處于活動狀態(tài)時(shí)創(chuàng)建和注冊。

  6. Spring Boot 的默認(rèn)配置文件:Spring Boot 提供了一些默認(rèn)配置文件,例如default、dev、test和prod。默認(rèn)情況下,該default配置文件始終處于活動狀態(tài),可以根據(jù)部署環(huán)境激活其他配置文件。

Spring Boot 中常用的注解有哪些?

以下是一些常用的 Spring Boot 注解:

  1. @SpringBootApplication:該注解用于標(biāo)記Spring Boot應(yīng)用程序的主類。它結(jié)合了三個(gè)注釋:@Configuration、@EnableAutoConfiguration和@ComponentScan。它可以在您的應(yīng)用程序中啟用自動配置和組件掃描。

  2. @RestController:該注解用于表明一個(gè)類是一個(gè)RESTful控制器。它結(jié)合了@Controller和@ResponseBody注釋。它無需使用 來注釋每個(gè)方法,從而簡化了 RESTful Web 服務(wù)的開發(fā)@ResponseBody。

  3. @RequestMapping:此注釋用于將 HTTP 請求映射到特定的處理程序方法。它可以應(yīng)用于類級別,為類中的所有方法指定基本 URL,也可以應(yīng)用于方法級別,為特定處理程序方法定義 URL 和 HTTP 方法。

  4. @Autowired:此注釋用于自動將依賴項(xiàng)連接到 Spring 管理的 bean 中。它允許Spring自動發(fā)現(xiàn)并注入所需的bean,而不需要顯式的bean配置。

  5. @Value:此注釋用于將屬性文件或環(huán)境變量中的值注入到 Spring Beans 中。它可用于注入簡單的值(如字符串或數(shù)字)以及復(fù)雜的對象。

  6. @Configuration:該注解用于指示一個(gè)類向Spring應(yīng)用程序上下文提供配置。它經(jīng)常與 結(jié)合使用@Bean來定義 bean 和其他配置元素。

  7. @ComponentScan:該注解用于指定掃描 Spring 組件的基礎(chǔ)包,例如控制器、服務(wù)和存儲庫。它允許 Spring 在應(yīng)用程序上下文中自動發(fā)現(xiàn)并注冊這些組件。

  8. @EnableAutoConfiguration:該注解啟用了Spring Boot的自動配置機(jī)制,該機(jī)制根據(jù)依賴關(guān)系和類路徑自動配置各種組件和bean。

  9. @Conditional:此注釋用于根據(jù)某些條件有條件地啟用或禁用 Bean 和配置。它允許您根據(jù)特定條件或環(huán)境設(shè)置自定義應(yīng)用程序的行為。

中級 Spring Boot 面試問題

注釋有什么用@ConfigurationProperties?

Spring Boot 中的注解@ConfigurationProperties用于將外部配置屬性綁定到 Java 類。它提供了一種便捷的方法將配置文件中定義的屬性(例如application.properties或application.yml)映射到配置類中的相應(yīng)字段。

使用的好處@ConfigurationProperties包括:

  1. 類型安全:注釋確保配置屬性綁定到配置類中定義的適當(dāng)類型,防止類型不匹配和潛在的運(yùn)行時(shí)錯誤。

  2. 屬性驗(yàn)證:您可以使用 Spring 提供的各種驗(yàn)證注解來驗(yàn)證屬性,例如@NotNull、@Min、@Max和自定義驗(yàn)證。

  3. 分層屬性映射:您可以定義嵌套的配置類來表示復(fù)雜的配置結(jié)構(gòu),并將它們分層映射到相應(yīng)的屬性。

  4. 易于集成:帶注釋的配置類可以輕松自動裝配并在整個(gè)應(yīng)用程序中使用,從而簡化了不同組件中配置值的檢索。

這是使用的示例@ConfigurationProperties:


文章來源地址http://www.zghlxwxcb.cn/article/411.html

@Configuration
@ConfigurationProperties(prefix = "myapp")
public class MyAppConfiguration {
    private String name;
    private int port;

    // Getters and setters

    // Other custom methods or business logic
}
application.properties# Database Configuration
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=myusername
spring.datasource.password=mypassword

# Server Configuration
server.port=8080
server.servlet.context-path=/myapp

# Custom Application Properties
myapp.name=My Application
myapp.api.key=abc123


在此示例中,該類MyAppConfiguration使用@ConfigurationProperties“myapp”進(jìn)行注釋并指定前綴。配置文件中以“myapp”為前綴定義的屬性將綁定到該類中的相應(yīng)字段。

Spring Boot如何支持微服務(wù)架構(gòu)?

Spring Boot 為構(gòu)建基于微服務(wù)的應(yīng)用程序提供了廣泛的支持。它提供了一系列功能和集成,可簡化微服務(wù)的開發(fā)、部署和管理。以下是 Spring Boot 支持微服務(wù)架構(gòu)的方式:

  1. Spring Cloud:Spring Boot 與 Spring Cloud 無縫集成,Spring Cloud 是一組旨在構(gòu)建和操作云原生微服務(wù)的工具和框架。Spring Cloud提供了服務(wù)發(fā)現(xiàn)、客戶端負(fù)載均衡、分布式配置管理、斷路器等能力。

  2. 微服務(wù)設(shè)計(jì)模式:Spring Boot 采用微服務(wù)設(shè)計(jì)模式,例如使用 RESTful API 進(jìn)行服務(wù)之間的通信、用于可擴(kuò)展性的無狀態(tài)服務(wù)以及分散式數(shù)據(jù)管理。它提供了一個(gè)輕量級且靈活的框架,使開發(fā)人員能夠輕松實(shí)現(xiàn)這些模式。

  3. 服務(wù)注冊和發(fā)現(xiàn):Spring Boot 與服務(wù)注冊和發(fā)現(xiàn)工具集成,例如 Netflix Eureka 和 Consul。這些工具允許微服務(wù)向注冊表注冊并動態(tài)發(fā)現(xiàn)其他服務(wù)。這有助于實(shí)現(xiàn)服務(wù)彈性、負(fù)載平衡和自動服務(wù)發(fā)現(xiàn)。

  4. 外部化配置:Spring Boot 支持外部化配置,允許根據(jù)環(huán)境或特定部署需求輕松配置微服務(wù)。它可以將配置與代碼分離,從而更輕松地跨多個(gè)微服務(wù)管理配置屬性。

  5. 分布式跟蹤和監(jiān)控:Spring Boot 與 Zipkin 和 Sleuth 等分布式跟蹤系統(tǒng)集成,支持跨多個(gè)微服務(wù)跟蹤請求。它還提供與 Prometheus 和 Grafana 等監(jiān)控工具的集成,以監(jiān)控微服務(wù)的運(yùn)行狀況、性能和資源使用情況。

  6. 彈性和容錯:Spring Boot 支持使用斷路器(例如 Netflix Hystrix)等功能來實(shí)現(xiàn)容錯微服務(wù),這有助于防止分布式系統(tǒng)中的級聯(lián)故障。它還提供了處理微服務(wù)交互中的重試、超時(shí)和回退的機(jī)制。

  7. 容器化和部署:Spring Boot 應(yīng)用程序可以使用 Docker 等技術(shù)輕松容器化,從而允許使用 Kubernetes 等容器編排平臺無縫部署和擴(kuò)展微服務(wù)。

什么是 Spring 數(shù)據(jù)?Spring Boot 中使用了哪些不同的 Spring Data Starter?

Spring Data 是 Spring Framework 的一個(gè)子項(xiàng)目,它通過為不同的數(shù)據(jù)存儲技術(shù)提供統(tǒng)一的編程模型來簡化數(shù)據(jù)訪問。它減少了樣板代碼并允許開發(fā)人員專注于業(yè)務(wù)邏輯。Spring Data 支持關(guān)系數(shù)據(jù)庫、NoSQL 數(shù)據(jù)庫等。它利用存儲庫來抽象數(shù)據(jù)訪問操作,從而無需手動 CRUD 代碼。Spring Data 的啟動器為特定數(shù)據(jù)庫提供預(yù)配置的依賴項(xiàng)和自動配置,從而簡化了設(shè)置過程。使用Spring Data,開發(fā)人員可以輕松地與數(shù)據(jù)源交互,并受益于其強(qiáng)大的查詢功能。

以下是針對不同類型數(shù)據(jù)庫的 Spring Data 入門示例:

  1. spring-boot-starter-data-jpa:此啟動器提供對 Java Persistence API (JPA) 和 Hibernate 的支持。它包括使用 JPA 處理關(guān)系數(shù)據(jù)庫所需的依賴項(xiàng)和配置。

  2. spring-boot-starter-data-mongodb:此啟動器提供對流行的 NoSQL 數(shù)據(jù)庫 MongoDB 的支持。它包括使用 Spring Data MongoDB 處理 MongoDB 所需的依賴項(xiàng)和配置。

  3. spring-boot-starter-data-redis:此啟動器提供對內(nèi)存數(shù)據(jù)結(jié)構(gòu)存儲 Redis 的支持。它包括使用 Spring Data Redis 處理 Redis 所需的依賴項(xiàng)和配置。

  4. spring-boot-starter-data-cassandra:此啟動器提供對 Apache Cassandra(一種高度可擴(kuò)展的 NoSQL 數(shù)據(jù)庫)的支持。它包括使用 Spring Data Cassandra 處理 Cassandra 所需的依賴項(xiàng)和配置。

  5. spring-boot-starter-data-elasticsearch:此啟動器為分布式搜索和分析引擎 Elasticsearch 提供支持。它包括使用 Spring Data Elasticsearch 來使用 Elasticsearch 所需的依賴項(xiàng)和配置。

如何在 Spring Boot 應(yīng)用程序中使用 RESTful Web 服務(wù)?

在 Spring Boot 應(yīng)用程序中,您可以使用 RestTemplate 或 WebClient 使用 RESTful Web 服務(wù)。RestTemplate 提供了用于發(fā)出 HTTP 請求的同步 API,而 WebClient 則提供了非阻塞和反應(yīng)式方法。兩者都允許您發(fā)送 GET、POST、PUT、DELETE 請求、處理響應(yīng)數(shù)據(jù)并將其反序列化為 Java 對象。

如何為 Spring Boot 應(yīng)用程序創(chuàng)建和運(yùn)行單元測試?

在 Spring Boot 應(yīng)用程序中,您可以使用 Spring Test 框架創(chuàng)建和運(yùn)行單元測試。@RunWith(SpringRunner.class)通過利用和 等注釋@SpringBootTest,您可以初始化應(yīng)用程序上下文并對 Bean 和組件執(zhí)行測試。 

此外,您可以使用 Mockito 或其他模擬框架來模擬依賴項(xiàng)并隔離測試中的單元。借助 JUnit 或 AssertJ 的斷言,您可以驗(yàn)證預(yù)期的行為和斷言。 

最后,可以使用 Maven 或 Gradle 等工具來運(yùn)行測試,這些工具執(zhí)行測試并提供有關(guān)測試結(jié)果和覆蓋率的報(bào)告。

如何在Spring Boot應(yīng)用程序中啟用調(diào)試日志?

要在 Spring Boot 應(yīng)用程序中啟用調(diào)試日志,您可以將logging.level application.properties 或 application.yml 文件中的屬性設(shè)置為“DEBUG”。此配置將使日志框架能夠輸出詳細(xì)的調(diào)試信息?;蛘?,您可以使用@Slf4j類上的注釋來啟用該特定類的日志記錄。此外,您可以通過設(shè)置來配置特定包或類的日志記錄級別logging.level.{package/class}此外,您可以通過在配置文件中

要為整個(gè)應(yīng)用程序啟用調(diào)試日志,請使用:

logging.level.<package-name>=DEBUG

要為整個(gè)應(yīng)用程序啟用調(diào)試日志,請使用:

logging.level.root=DEBUG

Spring Boot 如何支持響應(yīng)式編程

Spring Boot 通過與Spring WebFlux集成提供對反應(yīng)式編程的支持。它允許開發(fā)人員構(gòu)建非阻塞、事件驅(qū)動的應(yīng)用程序,這些應(yīng)用程序可以利用反應(yīng)式流和反應(yīng)式編程模型有效地處理大量并發(fā)請求。

如何在 Spring Boot 應(yīng)用程序中啟用安全性?

我們可以使用以下不同的選項(xiàng)。

  1. 使用 Spring Security: 通過將 Spring Security Starter 依賴項(xiàng)添加到項(xiàng)目的構(gòu)建配置中來啟用安全性。

  2. OAuth2 和 OpenID Connect:使用 OAuth2 和 OpenID Connect 協(xié)議實(shí)現(xiàn)安全身份驗(yàn)證和授權(quán)。

  3. LDAP 集成: 通過與 LDAP(輕量級目錄訪問協(xié)議)服務(wù)器集成來實(shí)現(xiàn)用戶身份驗(yàn)證和授權(quán),從而實(shí)現(xiàn)安全性。

  4. JWT(JSON Web 令牌)身份驗(yàn)證:通過實(shí)施基于 JWT 的身份驗(yàn)證來實(shí)現(xiàn)無狀態(tài)和可擴(kuò)展的身份驗(yàn)證,從而實(shí)現(xiàn)安全性。

  5. 自定義身份驗(yàn)證提供程序:通過創(chuàng)建自定義身份驗(yàn)證提供程序以根據(jù)您自己的邏輯處理身份驗(yàn)證來啟用安全性。

Spring Boot DevTools 的目的是什么?我們?nèi)绾螁⒂盟?/h3>

它旨在提高生產(chǎn)力、簡化開發(fā)工作流程并在開發(fā)階段實(shí)現(xiàn)應(yīng)用程序的快速重啟。

以下是 Spring Boot DevTools 的一些主要功能和優(yōu)點(diǎn):

  1. 自動重新啟動:DevTools 監(jiān)視類路徑中的任何更改,并在檢測到修改時(shí)自動重新啟動應(yīng)用程序。

  2. 實(shí)時(shí)重新加載:DevTools 支持靜態(tài)資源的實(shí)時(shí)重新加載,例如 HTML、CSS 和 JavaScript 文件。

  3. 遠(yuǎn)程應(yīng)用程序重啟:DevTools 提供了遠(yuǎn)程觸發(fā)應(yīng)用程序重啟的功能。當(dāng)在分布式環(huán)境中工作或應(yīng)用程序在遠(yuǎn)程服務(wù)器上運(yùn)行時(shí),這非常有用。 

  4. 開發(fā)人員友好的錯誤頁面:DevTools 提供了增強(qiáng)的錯誤頁面,其中提供了有關(guān)應(yīng)用程序開發(fā)過程中遇到的異常和錯誤的詳細(xì)信息。 

  5. 配置屬性支持:DevTools 支持 Spring Boot 配置屬性的熱重載。對 application.properties 或 application.yml 文件所做的更改會自動應(yīng)用,無需重新啟動應(yīng)用程序,從而可以快速更新配置。

  6. 數(shù)據(jù)庫控制臺:DevTools 包括一個(gè)嵌入式數(shù)據(jù)庫控制臺,它提供基于 Web 的界面來與應(yīng)用程序的數(shù)據(jù)庫進(jìn)行交互。這使得開發(fā)人員可以輕松執(zhí)行 SQL 查詢、查看和修改數(shù)據(jù)以及執(zhí)行其他與數(shù)據(jù)庫相關(guān)的任務(wù),而無需外部工具。

要在 Spring Boot 應(yīng)用程序中啟用 Spring Boot DevTools,您需要包含適當(dāng)?shù)囊蕾図?xiàng)和配置。以下是啟用 DevTools 的步驟:

添加 DevTools 依賴項(xiàng):在您的pom.xml文件(對于 Maven)或build.gradle文件(對于 Gradle)中,添加以下依賴項(xiàng):

<!-- Maven -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
    <optional>true</optional>
</dependency>
// Gradle implementation 'org.springframework.boot:spring-boot-devtools'


spring-boot:run啟用自動重啟:默認(rèn)情況下,為使用命令或從 IDE運(yùn)行的應(yīng)用程序啟用 DevTools 。但是,您還可以通過將以下配置屬性添加到您的application.properties或application.yml文件中來為打包應(yīng)用程序啟用它:

spring.devtools.restart.enabled=true


針對有經(jīng)驗(yàn)的人的高級 Spring Boot 面試問題

如何在 Spring Boot 應(yīng)用程序中啟用 HTTPS?

要在 Spring Boot 應(yīng)用程序中啟用 HTTPS,您需要配置應(yīng)用程序的服務(wù)器屬性并提供必要的 SSL/TLS 證書。以下是啟用 HTTPS 的一般步驟:

  • 獲取 SSL/TLS 證書:從受信任的證書頒發(fā)機(jī)構(gòu) (CA) 獲取 SSL/TLS 證書或生成自簽名證書以用于開發(fā)/測試目的。

  • 配置服務(wù)器屬性:使用以下服務(wù)器配置更新application.properties或文件:application.yml

server.port=8443
server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=your_keystore_password
server.ssl.key-alias=your_alias_name

在上面的示例中,替換keystore.p12為密鑰庫文件的路徑,并設(shè)置適當(dāng)?shù)拿艽a和別名值。

  • 提供 SSL/TLS 證書:放置 SSL/TLS 證書文件 (keystore.p12 ) 放在類路徑中或在服務(wù)器屬性中指定絕對文件路徑。

  • 重新啟動應(yīng)用程序:重新啟動 Spring Boot 應(yīng)用程序以使更改生效。

  • 完成這些步驟后,您的 Spring Boot 應(yīng)用程序?qū)⑴渲脼槭褂?HTTPS。https://localhost:8443您可以使用服務(wù)器配置中指定的適當(dāng)主機(jī)名和端口來訪問應(yīng)用程序。

如何在Spring Boot中配置外部配置

要在 Spring Boot 中的項(xiàng)目外部配置外部配置,可以使用以下方法之一:

  1. 外部配置文件:您可以使用和屬性指定外部配置文件的位置,而不是將application.properties或application.yml文件放置在項(xiàng)目中。例如,您可以將配置文件放置在單獨(dú)的目錄中,并通過命令行或環(huán)境變量提供其位置。spring.config.namespring.config.location

  2. 操作系統(tǒng)環(huán)境變量:您可以利用操作系統(tǒng)提供的環(huán)境變量來配置 Spring Boot 應(yīng)用程序。@Value將所需的配置屬性定義為環(huán)境變量,并使用注釋或?qū)ο笤趹?yīng)用程序中訪問它們Environment。

  3. Spring Cloud Config:如果您有更復(fù)雜的配置設(shè)置或需要集中配置管理,可以使用 Spring Cloud Config。它提供了一個(gè)服務(wù)器端組件,您可以在其中存儲和管理多個(gè)應(yīng)用程序的配置。然后,您的 Spring Boot 應(yīng)用程序可以從 Spring Cloud Config 服務(wù)器獲取其配置。

  4. 配置服務(wù)器:另一種選擇是使用外部配置服務(wù)器,例如 Apache ZooKeeper 或 HashiCorp Consul。這些服務(wù)器充當(dāng)配置的中央存儲庫,并且可以由多個(gè)應(yīng)用程序訪問。

如何使用 Maven 創(chuàng)建 Spring Boot 應(yīng)用程序?

要使用 Maven 創(chuàng)建 Spring Boot 應(yīng)用程序,請執(zhí)行以下步驟:

設(shè)置 Maven:確保 Maven 已安裝在您的系統(tǒng)上。您可以從 Apache Maven 網(wǎng)站下載 Maven 并按照安裝說明進(jìn)行操作。

創(chuàng)建 Maven 項(xiàng)目:打開命令行或終端并導(dǎo)航到要在其中創(chuàng)建項(xiàng)目的目錄。使用以下 Maven 命令創(chuàng)建新項(xiàng)目:

mvn archetype:generate -DgroupId=com.example -DartifactId=my-spring-boot-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

此命令使用指定的groupId和來創(chuàng)建一個(gè)新的 Maven 項(xiàng)目artifactId。根據(jù)項(xiàng)目的需要調(diào)整這些值。

添加 Spring Boot Starter 依賴項(xiàng):打開pom.xml項(xiàng)目文件并為 Spring Boot 添加以下依賴項(xiàng):

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <version>2.5.2</version>
    </dependency>
</dependencies>

此依賴項(xiàng)包括您的應(yīng)用程序必需的 Spring Boot 庫。

創(chuàng)建 Spring Boot 主類:在 Maven 項(xiàng)目的相應(yīng)包中創(chuàng)建一個(gè)新的 Java 類。此類將作為 Spring Boot 應(yīng)用程序的入口點(diǎn)。這是一個(gè)例子:

package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MySpringBootApplication {

    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApplication.class, args);
    }
}

該@SpringBootApplication注釋結(jié)合了基本 Spring Boot 應(yīng)用程序所需的多個(gè)注釋。

構(gòu)建并運(yùn)行應(yīng)用程序:使用以下 Maven 命令構(gòu)建并運(yùn)行 Spring Boot 應(yīng)用程序:

mvn spring-boot:run

Maven 將構(gòu)建您的項(xiàng)目、解決依賴關(guān)系并啟動 Spring Boot 應(yīng)用程序。

應(yīng)用程序運(yùn)行后,您可以使用http://localhost:8080(默認(rèn)情況下)或指定的端口(如果您已自定義)在 Web 瀏覽器中訪問它。

就是這樣!您已經(jīng)使用 Maven 創(chuàng)建了一個(gè) Spring Boot 應(yīng)用程序。您現(xiàn)在可以添加其他依賴項(xiàng)、配置應(yīng)用程序并開發(fā)所需的功能。

條件注釋有哪些不同類型?

Spring Boot 中一些常用的條件注釋有:

  1. @ConditionalOnClass:如果類路徑中存在特定類,則此注釋會配置 bean 或組件。

  2. @ConditionalOnMissingClass:如果類路徑中不存在特定類,則此注釋會配置 bean 或組件。

  3. @ConditionalOnBean:僅當(dāng)應(yīng)用程序上下文中存在另一個(gè)特定 bean 時(shí),此注釋才會配置 bean 或組件。

  4. @ConditionalOnMissingBean:僅當(dāng)應(yīng)用程序上下文中不存在另一個(gè)特定 bean 時(shí),此注釋才會配置 bean 或組件。

  5. @ConditionalOnProperty:此注釋根據(jù)應(yīng)用程序配置文件中特定屬性的值來配置 bean 或組件。

  6. @ConditionalOnExpression:此注釋基于 SpEL(Spring 表達(dá)式語言)表達(dá)式配置 bean 或組件。

  7. @ConditionalOnWebApplication:僅當(dāng)應(yīng)用程序是 Web 應(yīng)用程序時(shí),此注釋才配置 bean 或組件。

  8. @ConditionalOnNotWebApplication:僅當(dāng)應(yīng)用程序不是 Web 應(yīng)用程序時(shí),此注釋才配置 bean 或組件。

您能否解釋一下 Spring Boot Actuator 健康檢查以及創(chuàng)建自定義健康指標(biāo)的過程?

運(yùn)行狀況檢查提供有關(guān)應(yīng)用程序整體運(yùn)行狀況的寶貴信息,例如數(shù)據(jù)庫連接、外部服務(wù)可用性或您定義的任何其他自定義檢查。

默認(rèn)情況下,Spring Boot Actuator 提供一組預(yù)定義的運(yùn)行狀況指示器,用于檢查數(shù)據(jù)庫、磁盤空間等各種組件的運(yùn)行狀況。但是,您還可以創(chuàng)建自定義運(yùn)行狀況指示器來監(jiān)控應(yīng)用程序的特定方面。

要創(chuàng)建自定義運(yùn)行狀況指示器,您需要實(shí)現(xiàn)該HealthIndicator接口并重寫該health()方法。該health()方法應(yīng)返回 的實(shí)例Health,它表示自定義組件的運(yùn)行狀況。您可以使用該類Health來指示組件是啟動、關(guān)閉還是處于未知狀態(tài)。

以下是自定義運(yùn)行狀況指示器的示例:

import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Component;

@Component
public class CustomHealthIndicator implements HealthIndicator {

    @Override
    public Health health() {
        // Perform your custom health check logic here
        boolean isHealthy = true; // Replace with your actual health check logic

        if (isHealthy) {
            return Health.up().build();
        } else {
            return Health.down().withDetail("CustomComponent", "Not Healthy").build();
        }
    }
}

在此示例中,該類CustomHealthIndicator實(shí)現(xiàn)該HealthIndicator接口并重寫該health()方法。在該health()方法內(nèi)部,您可以編寫自定義運(yùn)行狀況檢查邏輯。如果組件正常,則可以返回Health.up()。否則,您可以Health.down()使用該方法返回附加詳細(xì)信息withDetail()。

一旦創(chuàng)建了自定義健康指示器,Spring Boot Actuator就會自動檢測到它,并且它的健康檢查將通過/actuator/health。

如何在 Spring Boot 中創(chuàng)建自定義執(zhí)行器端點(diǎn)?

要在 Spring Boot 中創(chuàng)建自定義 Actuator 端點(diǎn),您可以按照以下步驟操作:

  1. 創(chuàng)建自定義端點(diǎn):創(chuàng)建一個(gè)代表您的自定義端點(diǎn)的新類。此類應(yīng)使用 進(jìn)行注釋@Endpoint以表明它是 Actuator 端點(diǎn)。您還可以使用其他注釋(例如@ReadOperation、@WriteOperation、 或 )@DeleteOperation來定義端點(diǎn)支持的操作類型。

  2. 定義端點(diǎn)操作:在自定義端點(diǎn)類中,定義端點(diǎn)應(yīng)執(zhí)行的操作。您可以將注釋用于@ReadOperation只讀操作、@WriteOperation寫入操作和@DeleteOperation刪除操作。這些注釋有助于定義端點(diǎn)的 HTTP 方法和請求映射。

  3. 實(shí)現(xiàn)端點(diǎn)邏輯:實(shí)現(xiàn)自定義端點(diǎn)的每個(gè)操作的邏輯。這可以包括檢索信息、修改應(yīng)用程序狀態(tài)或執(zhí)行任何其他所需的操作。您可以根據(jù)您的具體要求靈活地定義功能。

  4. (可選)添加安全配置:如果您的自定義端點(diǎn)需要安全限制,您可以通過添加安全注解或修改應(yīng)用程序的安全配置來進(jìn)行配置。

以下是創(chuàng)建自定義 Actuator 端點(diǎn)的示例:

import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.boot.actuate.endpoint.annotation.WriteOperation;
import org.springframework.stereotype.Component;

@Component
@Endpoint(id = "customEndpoint")
public class CustomEndpoint {

    @ReadOperation
    public String getInformation() {
        // Retrieve and return information
        return "This is custom endpoint information.";
    }

    @WriteOperation
    public void updateInformation(String newInformation) {
        // Update information
        // ...
    }
}

在此示例中,該類CustomEndpoint使用 進(jìn)行注釋,@Endpoint將其定義為 Actuator 端點(diǎn)。它有兩個(gè)操作:getInformation()注釋為@ReadOperation用于檢索信息,updateInformation()注釋@WriteOperation為用于更新信息。

創(chuàng)建自定義端點(diǎn)后,它將自動注冊到 Spring Boot Actuator,您可以通過/actuator基本路徑和端點(diǎn) ID 來訪問它。在這種情況下,可以通過 訪問自定義端點(diǎn)/actuator/customEndpoint。

如何在 Spring Boot 應(yīng)用程序中啟用 CORS(跨域資源共享)?

要在 Spring Boot 應(yīng)用程序中啟用跨域資源共享 (CORS),您可以按照以下步驟操作:

添加 CORS 配置:創(chuàng)建一個(gè)配置類并對其進(jìn)行注釋@Configuration以定義 CORS 配置。在類內(nèi)部,創(chuàng)建一個(gè) bean 類型CorsFilter來配置 CORS 設(shè)置。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class CorsConfig {

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();

        // Allow requests from any origin
        config.addAllowedOrigin("*");
       
        // Allow specific HTTP methods (e.g., GET, POST, PUT, DELETE)
        config.addAllowedMethod("*");
       
        // Allow specific HTTP headers
        config.addAllowedHeader("*");

        source.registerCorsConfiguration("/**", config);
        return new CorsFilter(source);
    }
}

在此示例中,我們將 CORS 配置為允許來自任何來源的請求 ( *)、允許所有 HTTP 方法 ( *) 以及允許所有 HTTP 標(biāo)頭 ( *)。您可以根據(jù)您的具體要求自定義這些設(shè)置。

啟用 Web MVC 配置:如果您還沒有這樣做,請確保通過@EnableWebMvc在配置類上使用注釋或擴(kuò)展該類來在 Spring Boot 應(yīng)用程序中啟用 Web MVC 配置WebMvcConfigurerAdapter。

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {

    // Additional Web MVC configuration if needed
}

測試 CORS 配置:在 Spring Boot 應(yīng)用程序中啟用 CORS 后,您可以通過向端點(diǎn)發(fā)出跨源請求來測試它。確保響應(yīng)中包含必要的 CORS 標(biāo)頭,例如Access-Control-Allow-Origin、Access-Control-Allow-Methods和Access-Control-Allow-Headers。

啟用 CORS 允許您的 Spring Boot 應(yīng)用程序處理跨域請求并做出適當(dāng)?shù)捻憫?yīng)??紤]安全影響并根據(jù)應(yīng)用程序的要求和安全策略配置 CORS 設(shè)置非常重要。

如何在 Spring Boot 應(yīng)用程序中安排任務(wù)?

在 Spring Boot 應(yīng)用程序中,您可以使用@ScheduledSpringTask Scheduling功能提供的注釋來安排任務(wù)。以下是如何在 Spring Boot 應(yīng)用程序中安排任務(wù):

啟用調(diào)度:首先,確保在 Spring Boot 應(yīng)用程序中啟用任務(wù)調(diào)度。@EnableScheduling這可以通過在配置類上使用注釋或通過在主應(yīng)用程序類上添加@SpringBootApplication注釋來完成。@EnableScheduling

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {

    // Additional Web MVC configuration if needed
}

創(chuàng)建計(jì)劃任務(wù)方法:在應(yīng)用程序中定義要計(jì)劃的方法。@Scheduled使用 cron、固定延遲或固定速率注釋該方法并指定所需的調(diào)度表達(dá)式。

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class MyScheduledTasks {

    @Scheduled(cron = "0 0 8 * * *") // Run at 8 AM every day
    public void executeTask() {
        // Logic for the scheduled task
        System.out.println("Scheduled task executed!");
    }
}

在此示例中,executeTask()根據(jù)提供的 cron 表達(dá)式,該方法計(jì)劃在每天上午 8 點(diǎn)運(yùn)行。

測試計(jì)劃任務(wù):定義計(jì)劃任務(wù)后,您可以啟動 Spring Boot 應(yīng)用程序并觀察計(jì)劃任務(wù)根據(jù)指定的計(jì)劃執(zhí)行。

該@Scheduled注釋提供了多個(gè)用于指定調(diào)度表達(dá)式的選項(xiàng),包括 cron 表達(dá)式、固定延遲和固定速率。您可以根據(jù)您的日程安排要求選擇最合適的選項(xiàng)。

如何在 Spring Boot 應(yīng)用程序中啟用緩存?

要在 Spring Boot 應(yīng)用程序中啟用緩存,您可以按照以下步驟操作:

添加緩存依賴項(xiàng):確保項(xiàng)目的依賴項(xiàng)中包含必要的緩存依賴項(xiàng)。Spring Boot 提供對 Ehcache、Redis 和 Caffeine 等各種緩存提供程序的支持。將相應(yīng)的緩存依賴項(xiàng)添加到項(xiàng)目的pom.xml文件中。

例如,要使用 Ehcache 緩存提供程序,請?zhí)砑右韵乱蕾図?xiàng):

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache</artifactId>
</dependency>


啟用緩存:要在 Spring Boot 應(yīng)用程序中啟用緩存,請將@EnableCaching注釋添加到配置類中。此注釋啟用 Spring 的緩存基礎(chǔ)結(jié)構(gòu)并為應(yīng)用程序緩存做好準(zhǔn)備。

import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableCaching
public class CachingConfig {
    // Additional configuration if needed
}

為緩存注釋方法:確定應(yīng)用程序中要緩存的方法,并使用適當(dāng)?shù)木彺孀⑨寣ζ溥M(jìn)行注釋。@CacheableSpring Boot 為緩存操作提供了、@CachePut、 等注解@CacheEvict。

例如,假設(shè)您有一個(gè)從數(shù)據(jù)庫檢索數(shù)據(jù)的方法,并且您想要緩存結(jié)果。您可以使用注釋該方法并@Cacheable指定緩存名稱。

import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

@Service
public class DataService {

    @Cacheable("dataCache")
    public Data getData(String key) {
        // Logic to fetch data from a database or external service
        return data;
    }
}

在此示例中,該getData()方法注釋為@Cacheable“dataCache”,并將緩存名稱指定為“dataCache”。第一次使用特定鍵調(diào)用此方法時(shí),將獲取并緩存數(shù)據(jù)。使用相同鍵的后續(xù)調(diào)用將從緩存中檢索數(shù)據(jù),而不是執(zhí)行該方法。

配置緩存設(shè)置:如果您需要自定義緩存行為,您可以提供特定于您選擇的緩存提供程序的其他配置屬性。application.properties這些配置屬性可以在或文件中設(shè)置application.yml。

例如,如果您使用Ehcache,您可以在文件中配置緩存設(shè)置ehcache.xml,并在文件中指定文件的位置application.properties。

通過執(zhí)行以下步驟,您可以在 Spring Boot 應(yīng)用程序中啟用緩存,并利用緩存的優(yōu)勢來提高性能并減少數(shù)據(jù)庫或外部服務(wù)調(diào)用。

總結(jié)

總之,這些 Spring Boot 面試問題涵蓋了與 Spring Boot、其功能和最佳實(shí)踐相關(guān)的廣泛主題。通過熟悉這些問題及其答案,您可以更好地準(zhǔn)備 Spring Boot 面試,并展示您在開發(fā) Spring Boot 應(yīng)用程序方面的知識和專業(yè)知識。



到此這篇關(guān)于30 多個(gè)Spring Boot面試問題及答案的文章就介紹到這了,更多相關(guān)內(nèi)容可以在右上角搜索或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

原文地址:http://www.zghlxwxcb.cn/article/411.html

如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請聯(lián)系站長進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 面試題Spring - 關(guān)于Spring的25個(gè)經(jīng)典問題和答案

    Spring框架是一個(gè)為Java應(yīng)用程序的開發(fā)提供了綜合、廣泛的基礎(chǔ)性支持的Java平臺。Spring幫助開發(fā)者解決了開發(fā)中基礎(chǔ)性的問題,使得開發(fā)人員可以專注于應(yīng)用程序的開發(fā)。Spring框架本身亦是按照設(shè)計(jì)模式精心打造,這使得我們可以在開發(fā)環(huán)境中安心的集成Spring框架,不必?fù)?dān)心

    2024年02月03日
    瀏覽(16)
  • 30道軟件測試基礎(chǔ)面試題!(含答案)

    1、你的測試職業(yè)發(fā)展是什么? 測試經(jīng)驗(yàn)越多,測試能力越高。所以我的職業(yè)發(fā)展是需要時(shí)間積累的,一步步向著高級測試工程師奔去。而且我也有初步的職業(yè)規(guī)劃,前 3 年積累測試經(jīng)驗(yàn),按如何做好測試工程師的要點(diǎn)去要求自己,不斷更新自己改正自己,做好測試任務(wù)。

    2024年02月02日
    瀏覽(33)
  • 安全測試面試的30道基礎(chǔ)概念題目與參考答案

    安全測試面試的30道基礎(chǔ)概念題目與參考答案

    這篇文章主要介紹了關(guān)于安全測試面試的30道基礎(chǔ)概念題目與參考答案,總結(jié)分析了安全測試中常見的各種概念、原理與注意事項(xiàng),需要的朋友可以參考下 看看這些面試題目,目的是了解安全測試的基本概念。每一道題目都可以展開到一定的深度和廣度。 這里僅僅是一個(gè)拋磚引

    2024年04月12日
    瀏覽(24)
  • 2023年P(guān)HP面試題30道詳細(xì)整理(附帶答案)

    2023年P(guān)HP面試題30道詳細(xì)整理(附帶答案)

    1.請問一下你使用過swoole嗎,使用過,怎么設(shè)置心跳? 2.如果一個(gè)訪問量達(dá)到100萬,選擇緩存,你會選擇redis還memchache? 我會選擇memchache,因?yàn)樗挥幸环N類型,key-value,而redis的類型比memchache多,導(dǎo)致它的并發(fā)沒有memchache好。 3.psr2和psr4的區(qū)別? 意思:psr指的是php standards re

    2024年02月11日
    瀏覽(22)
  • 30道JVM綜合面試題詳解含答案(值得珍藏)

    30道JVM綜合面試題詳解含答案(值得珍藏)

    點(diǎn)擊下載《30道JVM綜合面試題詳解含答案(值得珍藏)》 Java中的所有類,都需要由類加載器裝載到JVM中才能運(yùn)行。類加載器本身也是一個(gè)類,而它的工作就是把class文件從硬盤讀取到內(nèi)存中。在寫程序的時(shí)候,我們幾乎不需要關(guān)心類的加載,因?yàn)檫@些都是隱式裝載的,除非我

    2024年02月02日
    瀏覽(20)
  • 30道python自動化測試面試題與答案匯總

    對于機(jī)器學(xué)習(xí)算法工程師而言,Python是不可或缺的語言,它的優(yōu)美與簡潔令人無法自拔,下面這篇文章主要給大家介紹了關(guān)于30道python自動化測試面試題與答案匯總的相關(guān)資料,需要的朋友可以參考下 :不變的、重復(fù)的、規(guī)范的 1)任務(wù)測試明確,需求不會頻繁變動 2)項(xiàng)目

    2024年02月03日
    瀏覽(24)
  • HTML面試題:30道含答案和代碼示例的練習(xí)題

    簡述HTML的作用和特點(diǎn)。 HTML全稱為超文本標(biāo)記語言,是一種用于創(chuàng)建網(wǎng)頁的標(biāo)準(zhǔn)語言。HTML文檔通常包含HTML標(biāo)簽和文本內(nèi)容,標(biāo)簽用于描述文檔的結(jié)構(gòu)和內(nèi)容。HTML具有易于學(xué)習(xí)、開放標(biāo)準(zhǔn)、可訪問性好等特點(diǎn)。 什么是HTML標(biāo)簽? HTML標(biāo)簽是HTML文檔中用于定義元素的代碼。標(biāo)簽

    2024年02月11日
    瀏覽(26)
  • Javascript面試題:30道含答案和代碼示例的練習(xí)題

    以下是30道Javascript面試題,每個(gè)問題都包含答案和代碼示例。這些問題涵蓋了Javascript的各個(gè)方面,包括基礎(chǔ)知識、DOM操作、事件處理、異步編程和面向?qū)ο缶幊痰取?什么是Javascript? Javascript是一種腳本語言,用于在Web瀏覽器中編寫交互式網(wǎng)頁應(yīng)用程序。 如何聲明變量? 使用

    2024年02月03日
    瀏覽(24)
  • Spring Boot中實(shí)現(xiàn)訂單30分鐘自動取消的策略

    Spring Boot中實(shí)現(xiàn)訂單30分鐘自動取消的策略

    ??歡迎來到架構(gòu)設(shè)計(jì)專欄~Spring Boot中實(shí)現(xiàn)訂單30分鐘自動取消的策略 ☆* o(≧▽≦)o *☆嗨~我是IT·陳寒?? ?博客主頁:IT·陳寒的博客 ??該系列文章專欄:架構(gòu)設(shè)計(jì) ??其他專欄:Java學(xué)習(xí)路線 Java面試技巧 Java實(shí)戰(zhàn)項(xiàng)目 AIGC人工智能 數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí) ??文章作者技術(shù)和水平有限,

    2024年02月08日
    瀏覽(30)
  • Spring Boot 3.x 系列【30】一行代碼搞定高級查詢

    有道無術(shù),術(shù)尚可求,有術(shù)無道,止于術(shù)。 本系列Spring Boot版本3.0.5 源碼地址:https://gitee.com/pearl-organization/study-spring-boot3

    2024年02月03日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包