Spring Boot 是由 Pivotal 團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新 Spring 應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程。該框架使用了特定的方式來(lái)進(jìn)行配置,從而使開(kāi)發(fā)人員不再需要定義樣板化的配置。 Spring Boot 簡(jiǎn)化了基于 Spring 的應(yīng)用開(kāi)發(fā),通過(guò)少量的代碼就能創(chuàng)建一個(gè)獨(dú)立的、產(chǎn)品級(jí)別的 Spring 應(yīng)用。
成都創(chuàng)新互聯(lián)公司專(zhuān)注于羅山企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開(kāi)發(fā),商城建設(shè)。羅山網(wǎng)站建設(shè)公司,為羅山等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站建設(shè),專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)作為一名 Java 程序員如果你已經(jīng)厭惡了傳統(tǒng)的開(kāi)發(fā)模式,希望有一個(gè)全新的框架可以提供快速開(kāi)發(fā),簡(jiǎn)單集成的編程體驗(yàn),強(qiáng)烈建議你學(xué)習(xí)了解 Spring Boot 。Spring Cloud 未來(lái)隨著 Kubernetes 和 Service Mesh 的發(fā)展可能會(huì)有所弱化,但是 Spring Boot 給開(kāi)發(fā)帶來(lái)的影響是深遠(yuǎn)的。
Spring Boot 的誕生
隨著 Spring 集成的軟件越來(lái)越多,Spring 也慢慢從一個(gè)單一簡(jiǎn)潔的小框架變成一個(gè)大而全的開(kāi)源軟件,Spring 的邊界不斷的進(jìn)行擴(kuò)充,到了后來(lái) Spring 幾乎可以做任何事情了,市面上主流的開(kāi)源軟件、中間件都有 Spring 對(duì)應(yīng)組件支持,人們?cè)谙碛?Spring 的這種便利之后,也遇到了一些問(wèn)題。
Spring 每集成一個(gè)開(kāi)源軟件,就需要增加一些基礎(chǔ)配置,慢慢的隨著人們開(kāi)發(fā)的項(xiàng)目越來(lái)越龐大,往往需要集成很多開(kāi)源軟件,因此后期使用 Spring 開(kāi)發(fā)大型項(xiàng)目需要引入很多配置文件,太多的配置非常難以理解,并容易配置出錯(cuò),到了后來(lái)人們甚至稱(chēng) Spring 為配置地獄。
Spring 似乎也意識(shí)到了這些問(wèn)題,急需有這么一套軟件可以解決這些問(wèn)題,這個(gè)時(shí)候微服務(wù)的概念也慢慢興起,快速開(kāi)發(fā)微小獨(dú)立的應(yīng)用變得更為急迫,Spring 剛好處在這么一個(gè)交叉點(diǎn)上,于 2013 年初開(kāi)始的 Spring Boot 項(xiàng)目的研發(fā),2014年4月,Spring Boot 1.0.0 發(fā)布。
上圖為2014年到2018年 Spring Boot 的百度指數(shù),可以看出 Spring Boot 2.0 的推出引發(fā)了搜索高峰。
Spring Boot 不是為了取代 Spring ,Spring Boot 基于 Spring 開(kāi)發(fā),是為了讓人們更容易的使用 Spring。看到 Spring Boot 的市場(chǎng)反應(yīng),Spring 官方也非常重視 Spring Boot 的后續(xù)發(fā)展,已經(jīng)將 Spring Boot 作為公司最頂級(jí)的項(xiàng)目來(lái)推廣,放到了官網(wǎng)上第一的位置,因此后續(xù) Spring Boot 的持續(xù)發(fā)展也被看好。
使用 Spring Boot 的優(yōu)勢(shì)
Spring Boot 讓開(kāi)發(fā)變得更簡(jiǎn)單
Spring Boot 對(duì)開(kāi)發(fā)效率的提升是全方位的,我們可以簡(jiǎn)單做一下對(duì)比:
在沒(méi)有使用 Spring Boot 之前我們開(kāi)發(fā)一個(gè) web 項(xiàng)目需要做哪些工作:
1)配置 web.xml,加載 Spring 和 Spring mvc
2)配置數(shù)據(jù)庫(kù)連接、配置 Spring 事務(wù)
3)配置加載配置文件的讀取,開(kāi)啟注解
4)配置日志文件
…
n) 配置完成之后部署 tomcat 調(diào)試
可能你還需要考慮各個(gè)版本的兼容性,jar 包沖突的各種可行性。
那么使用 Spring Boot 之后我們需要開(kāi)發(fā)一個(gè) web 項(xiàng)目需要哪些操作呢?
1)登錄網(wǎng)址 http://start.spring.io/ 選擇對(duì)應(yīng)的組件直接下載
2)導(dǎo)入項(xiàng)目,直接開(kāi)發(fā)
上面的 N 步和下面的2步形成巨大的反差,這僅僅只是在開(kāi)發(fā)環(huán)境搭建的這個(gè)方面。
Spring Boot 使測(cè)試變得更簡(jiǎn)單
Spring Boot 對(duì)測(cè)試的支持不可謂不強(qiáng)大,Spring Boot 內(nèi)置了7種強(qiáng)大的測(cè)試框架:
JUnit: 一個(gè) Java 語(yǔ)言的單元測(cè)試框架
Spring Test & Spring Boot Test:為 Spring Boot 應(yīng)用提供集成測(cè)試和工具支持
AssertJ:支持流式斷言的 Java 測(cè)試框架
Hamcrest:一個(gè)匹配器庫(kù)
Mockito:一個(gè) java mock 框架
JSONassert:一個(gè)針對(duì) JSON 的斷言庫(kù)
JsonPath:JSON XPath 庫(kù)
我們只需要在項(xiàng)目中引入spring-boot-start-test依賴(lài)包,就可以對(duì)數(shù)據(jù)庫(kù)、Mock、 Web 等各種情況進(jìn)行測(cè)試。
Spring Boot 讓配置變得更簡(jiǎn)單
Spring Boot 讓配置變簡(jiǎn)單,說(shuō)到這里我們就需要了解一下 Spring Boot 的核心思想:約定優(yōu)于配置。那么什么是約定優(yōu)于配置呢?約定優(yōu)于配置(convention over configuration),也稱(chēng)作按約定編程,是一種軟件設(shè)計(jì)范式,旨在減少軟件開(kāi)發(fā)人員需做決定的數(shù)量,獲得簡(jiǎn)單的好處,而又不失靈活性。
本質(zhì)是說(shuō),開(kāi)發(fā)人員僅需規(guī)定應(yīng)用中不符約定的部分。例如,如果模型中有個(gè)名為 User 的類(lèi),那么數(shù)據(jù)庫(kù)中對(duì)應(yīng)的表就會(huì)默認(rèn)命名為 user。只有在偏離這一約定時(shí),例如將該表命名為”user_info”,才需寫(xiě)有關(guān)這個(gè)名字的配置。
Spring Boot 體系將約定優(yōu)于配置的思想展現(xiàn)得淋淋盡致,小到配置文件,中間件的默認(rèn)配置,大到內(nèi)置容器、生態(tài)中的各種 Starters 無(wú)不遵循此設(shè)計(jì)規(guī)則。Spring Boot 鼓勵(lì)各軟件組織方創(chuàng)建自己的 Starters ,創(chuàng)建 Starter 的核心組件之一就是 autoconfigure 模塊,也是 Starter 的核心功能就是在啟動(dòng)的時(shí)候進(jìn)行自動(dòng)裝配,屬性默認(rèn)化配置。
Spring Boot 讓部署變得更簡(jiǎn)單
說(shuō)起 Spring Boot 讓部署變簡(jiǎn)單,就不得不說(shuō) Spring Boot 內(nèi)嵌容器。內(nèi)嵌容器不只讓部署變得簡(jiǎn)單,其實(shí)在開(kāi)發(fā)調(diào)試階段也會(huì)帶來(lái)非常大的便利性,對(duì)比以往開(kāi)發(fā) Web 項(xiàng)目時(shí)配置 Tomcat 的繁瑣,會(huì)讓大家使用 Spring Boot 內(nèi)嵌容器開(kāi)發(fā)時(shí)有更深的感觸。使用 Spring Boot 開(kāi)發(fā) Web 項(xiàng)目,讓我們不需要關(guān)心容器的環(huán)境問(wèn)題,專(zhuān)心寫(xiě)業(yè)務(wù)代碼即可。
但內(nèi)嵌容器對(duì)部署帶來(lái)的改變其實(shí)更多,現(xiàn)在 Maven 、Gradle 已經(jīng)成了我們?nèi)粘i_(kāi)發(fā)必不可少的構(gòu)建工具,使用這些工具很容易的將項(xiàng)目打包成 Jar 或者 War 包,在服務(wù)器上我們僅僅只需要一條命令就可以啟動(dòng)項(xiàng)目。Spring Boot 支持在啟動(dòng)的時(shí)候添加定制,比如設(shè)置應(yīng)用的堆內(nèi)存、垃圾回收機(jī)制、日志路徑等等。
虛擬化技術(shù)的發(fā)展給我們帶來(lái)了更多的可能性,我們可以利用容器化技術(shù),將 Spring Boot 項(xiàng)目做成鏡像,根據(jù)容器集群的策略來(lái)實(shí)現(xiàn)彈性擴(kuò)容、動(dòng)態(tài)部署等。所以 Spring Boot + Docker + Jenkins 會(huì)將 Spring Boot 項(xiàng)目的部署做得更簡(jiǎn)單化、智能化。
Spring Boot 讓監(jiān)控變得更簡(jiǎn)單
可以說(shuō) Spring Boot 就是一款自帶監(jiān)控的開(kāi)源軟件,在設(shè)計(jì)之初就考慮到應(yīng)用的監(jiān)控問(wèn)題,專(zhuān)門(mén)提供了一款監(jiān)控組件來(lái)完成這個(gè)工作,這個(gè)組件就是 Spring Boot Actuator 。Spring Boot Actuator 是 Spring Boot 提供的對(duì)應(yīng)用系統(tǒng)監(jiān)控的集成功能,可以查看應(yīng)用配置的詳細(xì)信息,例如自動(dòng)化配置信息、創(chuàng)建的 Spring beans 以及一些環(huán)境屬性等。
當(dāng)然 Spring Boot Actuator 雖然可以監(jiān)控一個(gè) Spring Boot 應(yīng)用的健康情況,實(shí)際上現(xiàn)在的系統(tǒng)都是需要很多的服務(wù)相互配合來(lái)完成工作,如何通過(guò)一個(gè)監(jiān)控軟件來(lái)監(jiān)控所以的 Spring Boot 項(xiàng)目將變得比較緊迫。在開(kāi)源界也有人意識(shí)到了這個(gè)問(wèn)題,并且基于 Spring boot actuator 做出了一款強(qiáng)大的監(jiān)控軟件,這個(gè)軟件就是 Spring Boot admin 。
使用 Spring Boot Admin 不僅可以監(jiān)控 Spring Boot 項(xiàng)目,還可以監(jiān)控 Spring Cloud 項(xiàng)目,因此使用了 Spring Boot 項(xiàng)目之后我們監(jiān)控 Spring Boot 集群效果如下:
簡(jiǎn)單、直觀(guān)、易用是它的特點(diǎn),針對(duì)一些特殊情況還可以提供報(bào)警服務(wù)。所以說(shuō)使用 Spring Boot Actuator 解決了單個(gè) Spring Boot 的監(jiān)控問(wèn)題,使用 Spring Boot Admin 就是解決了整個(gè)集群監(jiān)控的問(wèn)題。