1. 前言
剛剛入行 Java 的同學經常有這種疑問: Spring 和 Spring 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 Boot 將 Spring Framework 的功能進行了擴充套件,將繁瑣的配置功能進行了內部整合,通過一些自動化的配置和類似 SPI 的發現機制來自動感知功能元件,大大降低了使用成本,而且保證了和Spring Framework 的一致性。
簡便
Spring Boot可以快速通過引導式的步驟搭建一個生產級企業應用開發平臺,而無需繁瑣的配置。而且提供了預設配置,甚至你可以達到零配置接入。
靈活
Spring Boot同時對常用的功能進行了元件化的抽象,可以按需引用。另外也指定了一攬子的元件規範讓開發者可以自行實現符合 Spring Boot 風格的元件(Starter),讓你實現外掛化開發。
集中
每一個版本的依賴都經過測試和挑選,對各個元件進行了集中管理,構成一個 parent 集合,減少了依賴衝突的可能性。
敏捷
Spring Boot通過一些註解簡化了之前的開發和配置,減少了模板程式碼的編寫,加快了開發速度。內建Web 容器甚至可以以 Jar 的方式快速部署執行。
4. 兩者之間的關係
Spring Framework 和 Spring Boot 的根本是一致的。Spring Boot 是 Spring Framework 的載入程式以簡化其配置和使用。而Spring Framework 是 Spring Boot 的基礎,Spring Boot 無法脫離 Spring Framework 。使用者通過上層 Spring Boot 的引導來使用 Spring Framework 。
5. 總結
今天對 Spring Framework 和 Spring Boot 之間的關係進行了簡單說明,希望能夠幫助一些學習者的疑惑。有什麼問題可以留言討論,也可以關注公眾號:Felordcn 私信留言,同時關注可直接獲取學習資料進行學習。