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

  • 2022 年 5 月 25 日
  • 筆記

一個工作了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帶你學架構
如果本篇文章對您有幫助,還請幫忙點個關注和贊,您的堅持是我不斷創作的動力。歡迎關注「跟着Mic學架構」公眾號公眾號獲取更多技術乾貨!