剛剛入行 Java 的同窗常常有這種疑問: Spring 和 Spring Boot 有什麼關係?它們之間有什麼區別?今天來探討一下這個問題。編程
Spring 一般指的是 Spring Framework 。一般 Java 開發就是面向對象開發、面向抽象接口開發。而軟件項目大多都是「堆積木」,隨着版本迭代會愈來愈大,這形成了個很大的問題就是對象的管理。恰好 Spring 的控制反轉,依賴注入,切面編程的特性對這些類生命週期的管理,組件模塊化,基礎層和業務分離解耦提供了很大的便利。就像粘合劑同樣把各類功能的庫「粘」到一塊兒,讓它們協同工做。框架
除了上圖中的一些功能特性外,Spring Framework 另外有個不多被說起的特色,它不多去造輪子,它只做上層的適配,做爲一箇中間抽象層。這種好處在於靈活,使用者能夠根據場景切換技術棧;另外這成就了 Spring Framework 成爲事實上 J2EE 的標準。 Spring Framework 已經成爲 Java 開發必須掌握的基本框架,不少時候咱們開發就是跟它打交道。模塊化
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),讓你實現插件化開發。spa
每個版本的依賴都通過測試和挑選,對各個組件進行了集中管理,構成一個 parent 集合,減小了依賴衝突的可能性。插件
Spring Boot經過一些註解簡化了以前的開發和配置,減小了模板代碼的編寫,加快了開發速度。內置Web 容器甚至能夠以 Jar 的方式快速部署運行。設計
Spring Framework 和 Spring Boot 的根本是一致的。Spring Boot 是 Spring Framework 的引導程序以簡化其配置和使用。而Spring Framework 是 Spring Boot 的基礎,Spring Boot 沒法脫離 Spring Framework 。用戶經過上層 Spring Boot 的引導來使用 Spring Framework 。3d
今天對 Spring Framework 和 Spring Boot 之間的關係進行了簡單說明,但願可以幫助一些學習者的疑惑。有什麼問題能夠留言討論,也能夠關注公衆號:Felordcn 私信留言,同時關注可直接獲取學習資料進行學習。