【Java面試】如何理解Spring Boot中的Starter?

跟著Mic學架構 發表於 2022-05-31
Java 面試 Spring

一個工作了3年的Java程式設計師,遇到一個Spring Boot的問題。

他對這個問題有一些瞭解,但是回答得不是很好,希望參考我的高手回答。

這個問題是:“如何理解Spring Boot中的Starter”。

對於這個問題,看看普通人和高手的回答。

普通人:

嗯。。。。。。。。。。。。。

高手:

Starter是Spring Boot的四大核心功能特性之一,除此之外,Spring Boot還有自動裝配、Actuator監控等特性。

Spring Boot裡面的這些特性,都是為了讓開發者在開發基於Spring生態下的企業級應用時,只需要關心業務邏輯,

減少對配置和外部環境的依賴。

其中,Starter是啟動依賴,它的主要作用有幾個。

  1. Starter元件以功能為緯度,來維護對應的jar包的版本依賴,

    使得開發者可以不需要去關心這些版本衝突這種容易出錯的細節。

  2. Starter元件會把對應功能的所有jar包依賴全部匯入進來,避免了開發者自己去引入依賴帶來的麻煩。
  3. Starter內部整合了自動裝配的機制,也就說在程式中依賴對應的starter元件以後,

    這個元件自動會整合到Spring生態下,並且對於相關Bean的管理,也是基於自動裝配機制來完成。

  4. 依賴Starter元件後,這個元件對應的功能所需要維護的外部化配置,會自動整合到Spring Boot裡面,

    我們只需要在application.properties檔案裡面進行維護就行了,比如Redis這個starter,只需要在application.properties

    檔案裡面新增redis的連線資訊就可以直接使用了。

在我看來,Starter元件幾乎完美的體現了Spring Boot裡面約定優於配置的理念。

image-20220422195005920

另外,Spring Boot官方提供了很多的Starter元件,比如Redis、JPA、MongoDB等等。

但是官方並不一定維護了所有中介軟體的Starter,所以對於不存在的Starter,第三方元件一般會自己去維護一個。

官方的starter和第三方的starter元件,最大的區別在於命名上。

官方維護的starter的以spring-boot-starter開頭的字首。

第三方維護的starter是以spring-boot-starter結尾的字尾

這也是一種約定優於配置的體現。

image-20220422200312845

以上就是我對這個問題的理解。

總結

在技術的學習過程中,我認為“為什麼是” 比 “是什麼”要重要。

以這種方式來學習,帶來的好處就是對技術理解會更加深刻。

這道題考察的就是“為什麼是”,不難,關鍵在於自己的理解。

如果你喜歡這篇文章,記得點贊和收藏。

如果想獲得一對一的面試指導以及面試資料,可以私信我。

file

版權宣告:本部落格所有文章除特別宣告外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Mic帶你學架構
如果本篇文章對您有幫助,還請幫忙點個關注和贊,您的堅持是我不斷創作的動力。歡迎關注同名微信公眾號獲取更多技術乾貨!