「你們好,我是草莓君!所謂站得高,尿的遠。站在Java巨人的肩膀上,手持SpringBoot暴風大劍,馳騁在召喚師峽谷(編程語言平臺)的戰場上,你覺得你的水晶(python、nodejs、Ruby...)還能挺過20分鐘嗎?」前端
Java從誕生之初到如今已經有20多年的歷史。在過去一段時間內,java一直飽受質疑,但是它依然緊緊的坐在全球開發者使用量上的第一名。Java可以一步步走向高峯,spring框架起到了濃墨重彩的角色。java
Spring 框架最開始的部分是由Rod Johnson於2000年爲倫敦金融界提供獨立諮詢業務時寫出來的。在《Expert One-On-One J2EE Development Without EJB》一書中,他進一步拓展了他的代碼,以闡述「如何讓應用程序能以超出當時大衆所慣於接受的易用性和穩定性與J2EE平臺上的不一樣組件合做」的觀點。node
很難想象Rod Johnson的學歷,真的讓好多人大吃一驚,他是悉尼大學的博士,然而他的專業不是計算機,而是音樂學。不明白那個禿頂的腦殼瓜裏怎麼會同時擁有如此高深的計算機技術和高雅的藝術細胞,只能驚爲神人。禿腦殼瓜並無讓Rod Johnson變得難看,好幾個同窗一致認爲這傢伙長得很酷。他看去是一個典型的英國紳士,雖然他好像出生在澳大利亞,可是如今住在倫敦。提及話來也是一板一眼,有條有理。python
在被模仿的同時,Spring並無停下腳步。它繼續在其它領域不斷髮展:移動開發,社交API集成、安全管理、NoSQL數據庫、雲計算和大數據等等都是它正在涉足和創新的領域,其前景更加廣闊,甚至已經造成與傳統的JavaEE平臺平起平坐之勢。web
###spring1.xspring
2004年3月,Spring1.0正式發佈數據庫
2003年6月,Spring Framework 第一次以 Apache 2.0 許可證下發布0.9版本,2004年3月,Spring1.0正式發佈。 對於Spring1.0,其源碼只有一個包,在該包中包含了aop、beans、context、core、jdbc、orm等。對於此時的版本,Spring1.0僅支持XML配置的方式。編程
2006年10 月,Spring2.0發佈。緩存
對於2.0,Spring主要增長了對註解的支持,實現了基於註解的配置。 在2007年11月,發佈Spring2.5,該版本具有的特性有:tomcat
2009年12月,Spring3.0發佈
Spring3.0主要具備的特性有:
2013年12月,發佈Spring4.0
對於Spring4.0是Spring版本歷史上的一重大升級。其特性爲:
2017 年 09 月,Spring 5.0 發佈
對於spring而言,spring框架的生態環境已經很是豐富,下圖是spring框架所包含的子項目:
隨着使用 Spring 進行開發的我的和企業愈來愈多,Spring 也慢慢從一個單一簡潔的小框架變成一個大而全的開源軟件,Spring 的邊界不斷的進行擴充,到了後來 Spring 幾乎能夠作任何事情了,市面上主流的開源軟件、中間件都有 Spring 對應組件支持,人們在享用 Spring 的這種便利以後,也遇到了一些問題。
Spring 每集成一個開源軟件,就須要增長一些基礎配置,慢慢的隨着人們開發的項目愈來愈龐大,每每須要集成不少開源軟件,所以後期使用 Spirng 開發大型項目須要引入不少配置文件,太多的配置很是難以理解,並容易配置出錯,到了後來人們甚至稱 Spring 爲配置地獄。
Spring 彷佛也意識到了這些問題,急需有這麼一套軟件能夠解決這些問題,這個時候微服務的概念也慢慢興起,快速開發微小獨立的應用變得更爲急迫,Spring 恰好處在這麼一個交叉點上,於 2013 年初開始的 Spring Boot 項目的研發,2014年4月,Spring Boot 1.0.0 發佈。
Spring Boot 誕生之初,就受到開源社區的持續關注,陸續有一些我的和企業嘗試着使用了 Spring Boot,並迅速喜歡上了這款開源軟件。直到2016年,在國內 Spring Boot 才被正真使用了起來,期間不少研究 Spring Boot 的開發者在網上寫了大量關於 Spring Boot 的文章,同時有一些公司在企業內部進行了小規模的使用,並將使用經驗分享了出來。從2016年到2018年,使用 Spring Boot 的企業和我的開發者愈來愈多,咱們從 Spring Boot 關鍵字的百度指數就能夠看出。
固然 Spring Boot 不是爲了取代 Spring ,Spring Boot 基於 Spring 開發,是爲了讓人們更容易的使用 Spring。看到 Spring Boot 的市場反應,Spring 官方也很是重視 Spring Boot 的後續發展,已經將 Spring Boot 做爲公司最頂級的項目來推廣,放到了官網上第一的位置,所以後續 Spring Boot 的持續發展也被看好。
Spring Boot 是由 Pivotal 團隊提供的全新框架,其設計目的是用來簡化新 Spring 應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員再也不須要定義樣板化的配置。用個人話來理解,就是 Spring Boot 其實不是什麼新的框架,它默認配置了不少框架的使用方式。
Spring Boot 簡化了基於 Spring 的應用開發,經過少許的代碼就能建立一個獨立的、產品級別的 Spring 應用。 Spring Boot 爲 Spring 平臺及第三方庫提供開箱即用的設置,這樣你就能夠有條不紊地開始。Spring Boot 的核心思想就是約定大於配置,多數 Spring Boot 應用只須要不多的 Spring 配置。採用 Spring Boot 能夠大大的簡化你的開發模式,全部你想集成的經常使用框架,它都有對應的組件支持。
Spring Boot 對開發效率的提高是全方位的,咱們能夠簡單作一下對比:
在沒有使用 Spring Boot 以前咱們開發一個 web 項目須要作哪些工做:
可能你還須要考慮各個版本的兼容性,jar 包衝突的各類可行性。
那麼使用 Spring Boot 以後咱們須要開發一個 web 項目須要哪些操做呢?
上面的 N 步和下面的2步造成巨大的反差,這僅僅只是在開發環境搭建的這個方面。
Spring Boot 對測試的支持不可謂不強大,Spring Boot 內置了7種強大的測試框架:
咱們只須要在項目中引入 spring-boot-start-test依賴包,就能夠對數據庫、Mock、 Web 等各類狀況進行測試。 Spring Boot Test 中包含了咱們須要使用的各類測試場景,知足咱們平常項目的測試需求。
Spring Boot 讓配置變簡單,說到這裏咱們就須要瞭解一下 Spring Boot 的核心思想:約定優於配置。那麼什麼是約定優於配置呢?
約定優於配置(convention over configuration),也稱做按約定編程,是一種軟件設計範式,旨在減小軟件開發人員需作決定的數量,得到簡單的好處,而又不失靈活性。
本質是說,開發人員僅需規定應用中不符約定的部分。例如,若是模型中有個名爲 User 的類,那麼數據庫中對應的表就會默認命名爲 user。只有在偏離這一約定時,例如將該表命名爲」user_info」,才需寫有關這個名字的配置。
提及 Spring Boot 讓部署變簡單,就不得不說 Spring Boot 內嵌容器。內嵌容器不僅讓部署變得簡單,其實在開發調試階段也會帶來很是大的便利性,對比以往開發 Web 項目時配置 Tomcat 的繁瑣,會讓你們使用 Spring Boot 內嵌容器開發時有更深的感觸。使用 Spring Boot 開發 Web 項目,讓咱們不須要關心容器的環境問題,專心寫業務代碼便可。
Jenkins 是目前持續構建領域使用最普遍的工具之一,Jenkins 是一個獨立的開源自動化服務器,可用於自動化各類任務,如構建,測試和部署軟件。Jenkins 能夠經過本機系統包 Docker 安裝,甚至能夠經過安裝 Java Runtime Environment 的任何機器獨立運行。
說直白一點 Jenkins 就是專門來負責如何將代碼變成可執行的程序包,將它部署到目標服務器中,並對其運營狀態(日誌)進行監控的軟件。自動化、性能、打包、部署、發佈、發佈結果自動化驗證、接口測試、單元測試等等關於咱們打包測試部署的方方面面 Jenkins 均可以很友好的支持。
使用 Jenkins 部署 Spring Boot 項目很是簡單,只須要前期作一些簡單的配置,當咱們須要發佈項目時只須要點擊項目對應的發佈按鈕,就能夠將項目從版本庫中拉取、打包、發佈到目標服務器中,大大簡化了運維後期的部署工做。
虛擬化技術的發展給咱們帶來了更多的可能性,咱們能夠利用容器化技術,將 Spring Boot 項目作成鏡像,根據容器集羣的策略來實現彈性擴容、動態部署等。因此 Spring Boot + Docker + Jenkins 會將 Spring Boot 項目的部署作得更簡單化、智能化。
能夠說 Spring Boot 就是一款自帶監控的開源軟件,在設計之初就考慮到應用的監控問題,專門提供了一款監控組件來完成這個工做,這個組件就是 Spring Boot Actuator 。
Spring Boot Actuator 是 Spring Boot 提供的對應用系統監控的集成功能,能夠查看應用配置的詳細信息,例如自動化配置信息、建立的 Spring beans 以及一些環境屬性等。
固然 Spring Boot Actuator 雖然能夠監控一個 Spring Boot 應用的健康狀況,實際上如今的系統都是須要不少的服務相互配合來完成工做,如何經過一個監控軟件來監控因此的 Spring Boot 項目將變得比較緊迫。
在開源界也有人意識到了這個問題,而且基於 Spring boot actuator 作出了一款強大的監控軟件,這個軟件就是 Spring Boot admin 。
Spring Boot Admin 是一個管理和監控 Spring Boot 應用程序的開源軟件。每一個應用都認爲是一個客戶端,經過 HTTP 或者使用 Eureka 註冊到 admin server 中進行展現,Spring Boot Admin UI 部分使用 AngularJs 將數據展現在前端。
Spring Boot Admin 是一個針對 spring-boot 的 actuator 接口進行UI美化封裝的監控工具。他能夠:在列表中瀏覽全部被監控 spring-boot 項目的基本信息,詳細的 Health 信息、內存信息、JVM 信息、垃圾回收信息、各類配置信息(好比數據源、緩存列表和命中率)等,還能夠直接修改logger的level。
使用 Spring Boot Admin 不只能夠監控 Spring Boot 項目,還能夠監控 Spring Cloud 項目。
這五大特性構成了 Spring Boot 做爲微服務中間件的基礎,又提供了SpringCloud的基礎設施。
Spring Boot 就是叼!!