沒錯 Spring Boot 越來越火了,而且火的超過了我的預期,作為一名行走一線的 Java 程式設計師,你可能在各個方面感受到了 Spring Boot 的火。
Spring Boot 的火
技術社群 Spring Boot 的文章越來越多;Spring Boot 相關的圖文、視訊課程越來越多;使用 Spring Boot 的網際網路公司越來越多;現在出去面試 Java 工程師, Spring Boot 已經成了必問的內容。
一切都在證明,Spring Boot 已經成為了 Java 程式設計師必備的技能。並且可以預見的是未來 Spring Boot 的發展還會更好。
那我個人是如何感受到這一點呢?
三年前寫的一個 Spring Boot 入門的文章,單篇文章閱讀量超過百萬!在百度指數上搜尋 Spring Boot 關鍵字,可以看到一個氣勢如虹的增長曲線。
2016年,在 Github 上寫了一個 Spring Boot 的開源專案,現在竟有 15000+ Star,6600 + Fork ,在 Github 上 Star 排名今次於 Spring Boot 官方。
專案名稱:spring-boot-examples
專案地址:
注:這個開源專案還有很多國際友人蔘與貢獻。
Spring 官方也特別特別重視 Spring Boot ,直接將 Spring Boot 擺放到官網第一的位置上來。
Spring Boot 為什麼這麼火
作為一個學習使用三年多 Spring Boot 的程式設計師,我來試著從我的角度來給大家聊聊 Spring Boot 為什麼這麼火,可以在短短几年內給 Java 程式設計師帶來這麼大的變革。
從設計理念談起
要說到 Spring Boot 為什麼這麼火,就必須得聊聊 Spring Boot 的設計理念,正是此設計理念奠基了Spring Boot 開發設計的基準,讓 Spring Boot 走到了今天。
那 Spring Boot 的設計理念是什麼呢?它就是約定優於配置(convention over configuration)。
約定優於配置並不是一個新概念,它是一種軟體設計正規化,很早就應用在軟體架構設計中,它的作用是減少軟體開發人員需做決定的數量,獲得簡單的好處,而又不失靈活性。
只是 Spring Boot 讓這個設計理念上升了一個層次,Spring Boot 不止在某個功能上實現此設計理念,而是整個軟體體系都在踐行約定優於配置。
Spring Boot 體系將約定優於配置的思想展現得淋淋盡致,小到配置檔案,中介軟體的預設配置,大到內建容器、生態中的各種 Starters 無不遵循此設計規則。
Spring Boot Jpa 80% 大部分查詢功能都以約定的方式給與提供,另外 20% 複雜的場景,提供另外的技術手段來解決,典型的約定優於配置的實現。
Spring Boot Starter ,在專案啟動的時候,根據約定資訊對元件進行載入、初始化。因此專案中引入了對於的 Starter 之後,就可以到達開箱即用的效果。
甚至 Spring Cloud 的設計,也借鑑了約定優於配置的思想,很多元件都是在啟動時,預設提供了其相關的功能,可以讓我們的使用到達很少配置或者零配置。
Spring Boot 的 Starter 機制
Spring Boot Starter 是 Spring Boot 的 星辰大海。
正是因為豐富的 Spring Boot Starter ,讓 Spring Boot 征服了使用各個開源軟體的開發者,只要 Spring Boot Starter 指向哪個開源軟體,就會讓某個開源軟體變得異常好用。
這真的是這樣,有一種神筆馬良的感覺(誇張了一點)。
那什麼是 Spring Boot Starter 呢?
在 Spring Boot 中,Starter 是為快速應用開發提供“一站式服務”的依賴(Dependency)。Starter 使得開發人員在開始編寫新的模組時不需要拷貝樣板式的配置檔案、編寫樣板式的程式碼,只需要提供最簡單的配置即可開始程式設計。
Spring Boot Starter 有兩個核心元件:自動配置程式碼和提供自動配置模組及其它有用的依賴。也就意味著當我們專案中引入某個 Starter ,即擁有了此軟體的預設使用能力,除非我們需要特定的配置,一般情況下我僅需要少量的配置或者不配置即可使用元件對應的功能。
Spring Boot 由眾多 Starter 組成,隨著版本的推移 Starter 家族成員也與日俱增。在傳統 Maven 專案中通常將一些層、元件拆分為模組來管理,以便相互依賴複用,在 Spring Boot 專案中我們則可以建立自定義 Spring Boot Starter 來達成該目的。
Spring Boot Starter 統一了使用不同軟體的程式設計體驗。
在沒有使用 Spring Boot Starter 之前,我們需要按照每個開源軟體的特性,將對應的元件包整合到我們的開發專案中,因為每個元件的設計理念和開發團隊都不一致,因此會有很多不同的呼叫風格在我們的專案中。
Spring Boot 強大到很多技術社群都主動提供了對應的 Starter 元件,比如 MyBatis 、Apache Camel、Apache CXF 等等。隨著 Spring Boot 的發展 Starter 元件會越來越多。
Spring Boot 非常強大的原因之一就是提供了大量的 Spring Boot Starter ,如此多的“開箱即用” 的依賴模組,讓我們在日常開發中“拿來即用”,以便更加快速和高效專注於業務開發。
Spring Boot 的豪華開發團隊
我們經常會看到在介紹 Spring Boot 的時候有這麼一句:Spring Boot 是由 Pivotal 團隊提供的全新框架。由此我們得知 Spring Boot 是由 Pivotal 團隊所研發,那麼 Pivotal 團隊到底是一個什麼樣的團隊呢?其實這裡的 Pivotal 團隊是指 Pivotal 公司。
Pivotal 公司介紹:致力於“改變世界構造軟體的方式(We are transforming how the world builds software)”,提供雲原生應用開發 PaaS 平臺及服務,幫助企業客戶採用敏捷軟體開發方法論,從而提高軟體開發人員工作效率、減少運維成本,實現數字化轉型、IT 創新,並最終實現業務創新。
Pivotal 公司可謂是大牛雲集,公司研發的產品有: Spring 以及衍生框架、快取中介軟體 Redis、訊息佇列框架 RabbitMQ、資料引擎產品 Greenplum,還有 Tomcat、Groovy 裡的一些頂級開發者,DevOps 理論的提出者都在這個公司。
2016 年風靡全球的雲原生理念亦是 Pivotal 公司提出,美國矽谷著名的精益化創業書籍的作者 Eric Ries 也加入了 Pivotal公司。Spring Boot 為什麼如此的優秀,正是因為背後有這些全球的頂級開發者。
Pivotal 公司的背後其實是一場商業併購大片,有很多著名的公司在其身後,戴爾、Spring、EMC、VMware 等等,詳情大家開源看這篇文章:《是時候給大家介紹 Spring Boot/Cloud 背後豪華的研發團隊了》。
有個好乾爹
Spring Boot 的乾爹是誰呢?毫無疑問就是 Spring 了。有圖為證,看下面:
Spring Boot 完全依賴 Spring 來開發,發明 Spring Boot 也是為了讓大家更好的使用 Spring,而不是消滅 Spring ,所以說沒有 Spring 這個乾爹,就沒有 Spring Boot 。
當然 Spring Boot 不僅是基於 Spring 開發這麼簡單,Spring Boot 完全繼承了 Spring 乾爹的聲譽,說實話如果沒有 Spring 這個老幹爹十多年來打拼下來的天氣,哪有 Spring Boot 今天來的風光。
2002 年的時候, Rod Johnson 可能也沒有想到自己開創的一個小開源軟體,可以發展到今天這麼輝煌的一刻。到了今天,如果一個 Java 程式設計師說自己不知道 Spring ,那估計會把他當作外星人吧。
Spirng 當時以 IoC 和 Aop 開始發家,一開始的目標只是想幹掉 EJB 這個龐然大物,但是隨著時間的發展,Spring 開始了一路的逆襲之路,在2010年的時候 Spring 還是 SSH 三大框架之一,到了今天 Spring 要說自己是老二,還這沒有人敢說自己是第一。
正是因為 Spring 在 Java 社群中有如此強大的影響力,所以在 Spring Boot 一出生的時候,就受到了廣大社群愛好者的關注、使用、寫教程、貢獻程式碼、提 Bug。正是因為龐大的開源愛好者,才一起反鋪 Spring Boot ,讓 Spring Boot 發展這麼快,這麼好。
如果你想系統的學習 Spring Boot ,給大家推薦一個 Spring Boot 中文索引,收集了 Spring Boot 中文社群的所有學習資料,地址: springboot.fun/。
以上便是我個人對 Spring Boot 為什麼這麼火的一些淺薄見解,大家是怎麼認為的呢,歡迎給我留言。
作者簡介:純潔的微笑,一個有故事的程式設計師。曾在網際網路金融,第三方支付公司工作,現為一名自由職業者,和你一起用技術的角度去看這個世界。我的個人微訊號 puresmile2,歡迎大家找我聊天,記錄你我的故事。