沒錯 Spring Boot 越來越火了,而且火的超過了我的預期烦租,作為一名行走一線的 Java 程序員延赌,你可能在各個方面感受到了 Spring Boot 的火。
Spring Boot 的火火火火火火
技術(shù)社區(qū) Spring Boot 的文章越來越多叉橱;Spring Boot 相關(guān)的圖文挫以、視頻課程越來越多;使用 Spring Boot 的互聯(lián)網(wǎng)公司越來越多窃祝;現(xiàn)在出去面試 Java 工程師掐松, Spring Boot 已經(jīng)成了必問的內(nèi)容。
一切都在證明,Spring Boot 已經(jīng)成為了 Java 程序員必備的技能大磺。并且可以預見的是未來 Spring Boot 的發(fā)展還會更好泻仙。
那我個人是如何感受到這一點呢?
三年前寫的一個 Spring Boot 入門的文章量没,單篇文章閱讀量超過百萬玉转!在百度指數(shù)上搜索 Spring Boot 關(guān)鍵字,可以看到一個氣勢如虹的增長曲線殴蹄。
2016年究抓,在 Github 上寫了一個 Spring Boot 的開源項目,現(xiàn)在竟有 150000+ Star袭灯,6600 + Fork 刺下,在 Github 上 Star 排名今次于 Spring Boot 官方。
項目名稱:spring-boot-examples??
項目地址:
https://github.com/ityouknow/spring-boot-examples
注:這個開源項目還有很多國際友人參與貢獻稽荧。
Spring 官方也特別特別重視 Spring Boot 橘茉,直接將 Spring Boot 擺放到官網(wǎng)第一的位置上來。
Spring Boot 為什么這么火
作為一個學習使用三年多 Spring Boot 的程序員姨丈,我來試著從我的角度來給大家聊聊 Spring Boot 為什么這么火畅卓,可以在短短幾年內(nèi)給 Java 程序員帶來這么大的變革。
01.?從設(shè)計理念談起
要說到 Spring Boot 為什么這么火蟋恬,就必須得聊聊 Spring Boot 的設(shè)計理念翁潘,正是此設(shè)計理念奠基了Spring Boot 開發(fā)設(shè)計的基準,讓 Spring Boot 走到了今天歼争。
那 Spring Boot 的設(shè)計理念是什么呢拜马?它就是約定優(yōu)于配置(convention over configuration)。
約定優(yōu)于配置并不是一個新概念沐绒,它是一種軟件設(shè)計范式俩莽,很早就應用在軟件架構(gòu)設(shè)計中,它的作用是減少軟件開發(fā)人員需做決定的數(shù)量乔遮,獲得簡單的好處扮超,而又不失靈活性。
只是 Spring Boot 讓這個設(shè)計理念上升了一個層次申眼,Spring Boot 不止在某個功能上實現(xiàn)此設(shè)計理念瞒津,而是整個軟件體系都在踐行約定優(yōu)于配置蝉衣。
Spring Boot 體系將約定優(yōu)于配置的思想展現(xiàn)得淋淋盡致括尸,小到配置文件,中間件的默認配置病毡,大到內(nèi)置容器濒翻、生態(tài)中的各種 Starters 無不遵循此設(shè)計規(guī)則。
Spring Boot Jpa 80% 大部分查詢功能都以約定的方式給與提供,另外 20% 復雜的場景有送,提供另外的技術(shù)手段來解決淌喻,典型的約定優(yōu)于配置的實現(xiàn)。
Spring Boot Starter 雀摘,在項目啟動的時候裸删,根據(jù)約定信息對組件進行加載、初始化阵赠。因此項目中引入了對于的 Starter 之后涯塔,就可以到達開箱即用的效果。
甚至 Spring Cloud 的設(shè)計清蚀,也借鑒了約定優(yōu)于配置的思想匕荸,很多組件都是在啟動時,默認提供了其相關(guān)的功能枷邪,可以讓我們的使用到達很少配置或者零配置榛搔。
02.?Spring Boot 的 Starter 機制
Spring Boot Starter ?是 Spring Boot 的 星辰大海。
正是因為豐富的 Spring Boot Starter ?东揣,讓 Spring Boot 征服了使用各個開源軟件的開發(fā)者践惑,只要 Spring Boot Starter 指向哪個開源軟件,就會讓某個開源軟件變得異常好用嘶卧。
這真的是這樣童本,有一種神筆馬良的感覺(夸張了一點)。
那什么是 Spring Boot Starter 呢脸候?
在 Spring Boot 中穷娱,Starter 是為快速應用開發(fā)提供“一站式服務(wù)”的依賴(Dependency)。Starter 使得開發(fā)人員在開始編寫新的模塊時不需要拷貝樣板式的配置文件运沦、編寫樣板式的代碼泵额,只需要提供最簡單的配置即可開始編程。
Spring Boot Starter 有兩個核心組件:自動配置代碼和提供自動配置模塊及其它有用的依賴携添。也就意味著當我們項目中引入某個 Starter 嫁盲,即擁有了此軟件的默認使用能力,除非我們需要特定的配置烈掠,一般情況下我僅需要少量的配置或者不配置即可使用組件對應的功能羞秤。
Spring Boot 由眾多 Starter 組成,隨著版本的推移 Starter 家族成員也與日俱增左敌。在傳統(tǒng) Maven 項目中通常將一些層瘾蛋、組件拆分為模塊來管理,以便相互依賴復用矫限,在 Spring Boot 項目中我們則可以創(chuàng)建自定義 Spring Boot Starter 來達成該目的哺哼。
Spring Boot Starter 統(tǒng)一了使用不同軟件的編程體驗佩抹。
在沒有使用 Spring Boot Starter 之前,我們需要按照每個開源軟件的特性取董,將對應的組件包集成到我們的開發(fā)項目中棍苹,因為每個組件的設(shè)計理念和開發(fā)團隊都不一致,因此會有很多不同的調(diào)用風格在我們的項目中茵汰。
Spring Boot 強大到很多技術(shù)社區(qū)都主動提供了對應的 Starter 組件枢里,比如 MyBatis 、Apache Camel蹂午、Apache CXF 等等坡垫。隨著 Spring Boot 的發(fā)展?Starter 組件會越來越多。
Spring Boot 非常強大的原因之一就是提供了大量的 Spring Boot Starter 画侣,如此多的“開箱即用” 的依賴模塊冰悠,讓我們在日常開發(fā)中“拿來即用”,以便更加快速和高效專注于業(yè)務(wù)開發(fā)配乱。
03.?Spring Boot 的豪華開發(fā)團隊
我們經(jīng)常會看到在介紹 Spring Boot 的時候有這么一句:Spring Boot 是由 Pivotal 團隊提供的全新框架溉卓。由此我們得知 Spring Boot 是由 Pivotal 團隊所研發(fā),那么 Pivotal 團隊到底是一個什么樣的團隊呢搬泥?其實這里的 Pivotal 團隊是指 Pivotal 公司桑寨。
Pivotal 公司介紹:致力于“改變世界構(gòu)造軟件的方式(We are transforming how the world builds software)”,提供云原生應用開發(fā) PaaS 平臺及服務(wù)忿檩,幫助企業(yè)客戶采用敏捷軟件開發(fā)方法論尉尾,從而提高軟件開發(fā)人員工作效率、減少運維成本燥透,實現(xiàn)數(shù)字化轉(zhuǎn)型沙咏、IT 創(chuàng)新,并最終實現(xiàn)業(yè)務(wù)創(chuàng)新班套。
Pivotal 公司可謂是大牛云集肢藐,公司研發(fā)的產(chǎn)品有: Spring 以及衍生框架、緩存中間件 Redis吱韭、消息隊列框架 RabbitMQ吆豹、數(shù)據(jù)引擎產(chǎn)品 Greenplum,還有 Tomcat理盆、Groovy 里的一些頂級開發(fā)者痘煤,DevOps 理論的提出者都在這個公司。
2016 年風靡全球的云原生理念亦是 Pivotal 公司提出猿规,美國硅谷著名的精益化創(chuàng)業(yè)書籍的作者 Eric Ries 也加入了 Pivotal公司衷快。Spring Boot 為什么如此的優(yōu)秀,正是因為背后有這些全球的頂級開發(fā)者坎拐。
Pivotal 公司的背后其實是一場商業(yè)并購大片烦磁,有很多著名的公司在其身后养匈,戴爾哼勇、Spring都伪、EMC、VMware 等等积担,詳情大家開源看這篇文章:《是時候給大家介紹 Spring Boot/Cloud 背后豪華的研發(fā)團隊了》陨晶。
04.有個好干爹
Spring Boot 的干爹是誰呢?毫無疑問就是 Spring 了帝璧。有圖為證先誉,看下面:
Spring Boot 完全依賴 Spring 來開發(fā),發(fā)明 Spring Boot 也是為了讓大家更好的使用 Spring的烁,而不是消滅 Spring 褐耳,所以說沒有 Spring 這個干爹,就沒有 Spring Boot 渴庆。
當然 Spring Boot 不僅是基于 Spring 開發(fā)這么簡單铃芦,Spring Boot 完全繼承了 Spring 干爹的聲譽,說實話如果沒有 Spring 這個老干爹十多年來打拼下來的天氣襟雷,哪有 Spring Boot 今天來的風光刃滓。
2002 年的時候, Rod Johnson 可能也沒有想到自己開創(chuàng)的一個小開源軟件耸弄,可以發(fā)展到今天這么輝煌的一刻咧虎。到了今天,如果一個 Java 程序員說自己不知道 Spring 计呈,那估計會把他當作外星人吧砰诵。
Spirng 當時以 IoC 和 Aop 開始發(fā)家,一開始的目標只是想干掉 EJB 這個龐然大物捌显,但是隨著時間的發(fā)展胧砰,Spring 開始了一路的逆襲之路,在2010年的時候 Spring 還是 SSH 三大框架之一苇瓣,到了今天 Spring 要說自己是老二尉间,還這沒有人敢說自己是第一。
正是因為 Spring 在 Java 社區(qū)中有如此強大的影響力击罪,所以在 Spring Boot 一出生的時候哲嘲,就受到了廣大社區(qū)愛好者的關(guān)注、使用媳禁、寫教程眠副、貢獻代碼、提 Bug竣稽。正是因為龐大的開源愛好者囱怕,才一起反鋪 Spring Boot 霍弹,讓 Spring Boot 發(fā)展這么快,這么好娃弓。
如果你想系統(tǒng)的學習 Spring Boot 典格,給大家強烈推薦一個 Spring Boot 中文索引,收集了 Spring Boot 中文社區(qū)的所有學習資料台丛,地址:?http://springboot.fun/耍缴。
以上便是我個人對 Spring Boot 為什么這么火的一些淺薄見解,大家是怎么認為的呢挽霉,歡迎給我留言防嗡。