有了 Spring 為什麼還要弄個 Spring Boot

碼農小胖哥發表於2020-04-06

1. 前言

剛剛入行 Java 的同學經常有這種疑問: SpringSpring Boot 有什麼關係?它們之間有什麼區別?今天來探討一下這個問題。

2. Spring Framework

Spring 通常指的是 Spring Framework 。通常 Java 開發就是物件導向開發、面向抽象介面開發。而軟體專案大多都是“堆積木”,隨著版本迭代會越來越大,這造成了個很大的問題就是物件的管理。剛好 Spring 的控制反轉,依賴注入,切面程式設計的特性對這些類生命週期的管理,元件模組化,基礎層和業務分離解耦提供了很大的便利。就像粘合劑一樣把各種功能的庫“粘”到一起,讓它們協同工作。

除了上圖中的一些功能特性外,Spring Framework 另外有個很少被提及的特點,它很少去造輪子,它只作上層的適配,作為一箇中間抽象層。這種好處在於靈活,使用者可以根據場景切換技術棧;另外這成就了 Spring Framework 成為事實上 J2EE 的標準。 Spring Framework 已經成為 Java 開發必須掌握的基本框架,很多時候我們開發就是跟它打交道。

3. Spring Boot

Spring Framework 經過數年的迭代已經喪失了輕量級的標籤。在享受 Spring Framework 帶來的便利的同時,我們又進入了另一個噩夢:大量的 XML 配置。 Spring 使用者不單單要寫業務程式碼,還要通過編寫對應的 XML 配置,引入其它元件或者功能類庫也要進行繁瑣的適配,這偏離了 Spring Framework 最初設計的初衷。所以 Spring Boot 被設計出來。

Spring BootSpring Framework 的功能進行了擴充套件,將繁瑣的配置功能進行了內部整合,通過一些自動化的配置和類似 SPI 的發現機制來自動感知功能元件,大大降低了使用成本,而且保證了和Spring Framework 的一致性。

簡便

Spring Boot可以快速通過引導式的步驟搭建一個生產級企業應用開發平臺,而無需繁瑣的配置。而且提供了預設配置,甚至你可以達到零配置接入。

靈活

Spring Boot同時對常用的功能進行了元件化的抽象,可以按需引用。另外也指定了一攬子的元件規範讓開發者可以自行實現符合 Spring Boot 風格的元件(Starter),讓你實現外掛化開發。

集中

每一個版本的依賴都經過測試和挑選,對各個元件進行了集中管理,構成一個 parent 集合,減少了依賴衝突的可能性。

敏捷

Spring Boot通過一些註解簡化了之前的開發和配置,減少了模板程式碼的編寫,加快了開發速度。內建Web 容器甚至可以以 Jar 的方式快速部署執行。

4. 兩者之間的關係

Spring FrameworkSpring Boot 的根本是一致的。Spring BootSpring Framework 的載入程式以簡化其配置和使用。而Spring FrameworkSpring Boot 的基礎,Spring Boot 無法脫離 Spring Framework 。使用者通過上層 Spring Boot 的引導來使用 Spring Framework

5. 總結

今天對 Spring FrameworkSpring Boot 之間的關係進行了簡單說明,希望能夠幫助一些學習者的疑惑。有什麼問題可以留言討論,也可以關注公眾號:Felordcn 私信留言,同時關注可直接獲取學習資料進行學習。

有了 Spring 為什麼還要弄個 Spring Boot

相關文章