日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

一篇文章带你搞定和Spring Boot有关的那些高频面试题

發布時間:2025/3/16 javascript 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一篇文章带你搞定和Spring Boot有关的那些高频面试题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

自Spring Boot誕生以來,就引起了業界轟動,目前越來越多的公司技術選型選擇擁抱Spring Boot。所以Spring Boot也成為面試必問的問題之一。下面的問題是小胖哥面試了很多候選人后總結出來的,希望對你有所幫助

? ? ? ? ? ?Spring和Spring Boot有什么區別?

Spring Framework提供了多種功能,使Web應用程序的開發更加容易。這些功能包括依賴注入,數據綁定,面向方面的編程,數據訪問等等。

隨著Spring社區的壯大,Spring慢慢變得越來越復雜,不再像開始宣稱的那么輕量級。開發應用程序的配置量越來越大令開發者頭疼。這時Spring Boot就派上用場了 - 它采用“約定大于配置”的思想簡化了配置,對Spring提供的功能和配置而且將一些功能抽象成為“Starter”開箱即用、按需引用。極大地簡化了開發。

? ? ? ? ? ? ??我們如何使用Maven設置Spring Boot應用程序?

我們可以像在任何其他庫中一樣在Maven項目中包含Spring Boot。但是,最好的方法是從spring-boot-starter-parent項目繼承并聲明依賴于Spring Boot啟動器。這樣做可以讓我們的項目重用Spring Boot的默認設置。

繼承spring-boot-starter-parent項目非常簡單 - 我們只需要在pom.xml中指定一個parent元素:

我們可以在Maven 中央倉庫找到最新版本的?spring-boot-starter-parent。

上面的方式很方便但是并不一定符合實際需要。例如公司要求所有項目依賴構建從一個標準BOM開始,我們就不能按上面的方式進行。

在這種情況下,我們可以進行如下引用:

然后在 dependencies 標簽下引用Spring Boot 的starters 就行了。

? ? ? ? ? ? ? ??Spring boot 中的starter是什么?

依賴管理對于項目至關重要。當項目足夠復雜時,管理依賴項可能會變成一場噩夢,因為涉及的組件太多了。

這就是Spring Boot 的starter就派上用場了。每個starter都可以為我們提供所需要的Spring技術的一站式服務。并且以一致的方式傳遞和管理其他所需的依賴關系。

所有官方starter都在org.springframework.boot組下,其名稱以spring-boot-starter-開頭 。非官方的starter的名稱在前,如mybatis-spring-boot-starter。這種命名模式使得查找啟動器變得很容易,尤其是在使用支持按名稱搜索依賴關系的IDE時。但是這個不是絕對的,有些開發者可能不遵從這種契約。

目前大概有超過50種官方starter。最常用的是:

  • spring-boot-starter:?核心啟動器,包括自動配置支持,日志記錄和YAML

  • spring-boot-starter-aop:?使用Spring AOP和AspectJ進行面向方面編程的初學者

  • spring-boot-starter-data-jpa:?使用Spring Data JPA和Hibernate的啟動器

  • spring-boot-starter-jdbc:?用于將JDBC與HikariCP連接池一起使用的啟動器

  • spring-boot-starter-security:?使用Spring Security的啟動器

  • spring-boot-starter-test:?用于測試Spring Boot應用程序的啟動器

  • spring-boot-starter-web:?使用Spring MVC構建Web的啟動器,包括RESTful應用程序

其他starter 可去spring.io查詢

? ? ? ? ? ? ? ??Spring Boot 如何禁用特定的自動配置?

如果我們需要禁用特定Spring Boot的自動配置,我們可以使用@EnableAutoConfiguration注解的exclude屬性來指示它。如下禁用了

DataSourceAutoConfiguration:

如果我們使用@SpringBootApplication注解。?它具有@EnableAutoConfiguration作為元注解 - 我們同樣可以配置exclude屬性來禁用自動配置:

我們還可以使用spring.autoconfigure.exclude環境屬性禁用自動配置。在application.properties配置文件設置如下也可以達到同樣的目的:

? ? ? ? ? ? ? ??Spring Boot 如何注冊自定義自動配置?

要注冊自動配置類,我們必須在META-INF /?

spring.factories文件的EnableAutoConfiguration?鍵

下列出其完全限定名稱,如果是多個按照以下風格配置:

如果我們使用Maven構建一個項目,那么該文件應放在resources / META-INF目錄中。

? ? ? ? ? ? ? ??Spring Boot如何根據不同的條件來加載bean?

?

你可在配置中使用@Conditional 系列注解。例如@ConditionalOnMissingBean。此注釋的最顯著屬性是:

  • value:要檢查的bean類型

  • name:要檢查的bean的名稱

放置在使用@Bean裝飾的方法上時,目標類型默認為方法的返回類型:

表示的意思是如果不存在CustomService類型的bean則初始化并注入該bean。

? ? ? ? ? ? ? ???如何將Spring Boot Web應用程序部署為JAR和 WAR文件?

傳統上,我們將Web應用程序打包為WAR文件,然后將其部署到外部服務器中。這樣做可以讓我們在同一臺服務器上安排多個應用程序。在CPU和內存稀缺的時候,這是節省資源的好方法。

但事情發生了變化。現在計算機硬件相當便宜,并且注意力轉向服務器配置。在部署期間配置服務器的一個小錯誤可能會導致災難性后果。

Spring通過提供一個插件即spring-boot-maven-plugin來解決這個問題,將Web應用程序打包為可執行的JAR。要包含此插件,只需向pom.xml添加一個插件元素:

有了這個插件,我們將在執行包階段后得到一個fat JAR 。此JAR包含所有必需的依賴項,包括嵌入式服務器。因此,我們不再需要擔心配置外部服務器。

然后我們可以像運行普通的可執行JAR一樣運行應用程序。

請注意,必須將pom.xml文件中的packaging元素設置為?jar?才能構建JAR文件:

如果我們不包含這個元素,它也默認為jar。

如果我們想要構建WAR文件,請將包裝?元素更改為war:

并將容器依賴關系從打包文件中刪除:

執行Maven?包階段后,我們將擁有一個可部署的WAR文件。

? ? ? ? ? ? ? ???如何在Spring Boot啟動的時候運行一些邏輯?

可以實現Spring Boot 提供的接口 ApplicationRunner ?也可以實現接口CommandLineRunner,這兩個接口實現方式一樣,它們都只提供了一個 run 方法。

? ? ? ? ? ? ? ? ???Spring boot支持哪些外部配置?

Spring Boot支持外部配置,允許我們在各種環境中運行相同的應用程序。我們可以使用properties文件,YAML文件,環境變量,系統屬性和命令行選項參數來指定配置屬性。

然后,我們可以訪問使用這些屬性@Value注釋,經由綁定對象 的@ConfigurationProperties注釋,或Environment 環境抽象類注入。

以下是最常見的外部配置來源:

  • 命令行屬性:命令行選項參數是以雙連字符開頭的程序參數,例如-server.port = 8080。Spring Boot將所有參數轉換為屬性,并將它們添加到環境屬性集中。

  • 應用程序屬性:應用程序屬性是從application.properties文件或其YAML對應文件加載的屬性。默認情況下,Spring Boot會在當前目錄,類路徑根或其config子目錄中搜索此文件。

  • 特定于配置文件的屬性:特定于配置文件的屬性從application- {profile} .properties文件或其YAML對應文件加載。{profile}占位符是指活性輪廓。這些文件與非特定屬性文件位于相同位置,并且優先于非特定屬性文件。

? ? ? ? ? ? ? ? ??Spring和Spring Boot有什么區別?

在為Spring應用程序運行集成測試時,我們必須有一個ApplicationContext。

為了簡化測試,Spring Boot為測試提供了一個特殊的注釋?@SpringBootTest。此批注從其classes屬性指示的配置類創建ApplicationContext。

如果未設置classes屬性,Spring Boot將搜索主配置類。搜索從包含測試的包開始,直到找到使用@SpringBootApplication或@SpringBootConfiguration注釋的類。

請注意,如果我們使用JUnit 4,我們必須用@RunWith(SpringRunner.class)裝飾測試類。可以查閱我前面的關于Spring Boot Mock測試的文章來學習更多的測試方式。

? ? ? ? ? ?Spring Boot Actuator有什么用?

Spring Boot Actuator可以幫助你監控和管理Spring Boot應用,比如健康檢查、審計、統計和HTTP追蹤等。所有的這些特性可以通過JMX或者HTTP endpoints來獲得。

Actuator同時還可以與外部應用監控系統整合,比如 Prometheus, Graphite, DataDog, Influx, Wavefront, New Relic等。這些系統提供了非常好的儀表盤、圖標、分析和告警等功能,使得你可以通過統一的接口輕松的監控和管理你的應用。

Actuator使用Micrometer來整合上面提到的外部應用監控系統。這使得只要通過非常小的配置就可以集成任何應用監控系統。

將Spring Boot Actuator集成到一個項目中非常簡單。我們需要做的就是在pom.xml文件中包含?spring-boot-starter-actuator啟動器:

Spring Boot Actuator可以使用HTTP或JMX端點公開操作信息。但是,大多數應用程序都使用HTTP,其中端點的標識和/執行器前綴形成URL路徑。

以下是Actuator提供的一些最常見的內置端點:

  • auditevents:?公開審計事件信息

  • env:?公開環境屬性

  • health:?顯示應用程序運行狀況信息

  • httptrace:?顯示HTTP跟蹤信息

  • info:?顯示任意應用程序信息

  • metric:?顯示指標信息

  • mapping:?顯示所有@RequestMapping路徑的列表

  • scheduledtasks:?顯示應用程序中的計劃任務

  • threaddump:?執行線程轉儲

  • beans :所有加載的spring bean

生產使用Actuator務必保護好這些端點,避免未授權的訪問請求。

有道無術,術可成;有術無道,止于術

歡迎大家關注Java之道公眾號

好文章,我在看??

新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

總結

以上是生活随笔為你收集整理的一篇文章带你搞定和Spring Boot有关的那些高频面试题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。