您好,登錄后才能下訂單哦!
這篇文章主要介紹了Java Springboot之Spring家族的技術(shù)體系是什么,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
Spring Boot 在傳統(tǒng) Spring 框架的基礎(chǔ)上做了創(chuàng)新和優(yōu)化,將開發(fā)人員從以往煩瑣的配置工作中解放出來(lái),并提供了大量即插即用的集成化組件,從而解決了各種組件之間復(fù)雜的整合過程,大大提高了開發(fā)效率,降低了維護(hù)成本。
比如, 原本使用的是 Spring MVC 框架, 在整個(gè)開發(fā)過程中,除了需要編寫一大堆配置文件、針對(duì)每個(gè)層次引入專門的開發(fā)組件外,還需要獨(dú)立部署和管理應(yīng)用服務(wù)器。最后,為了對(duì)系統(tǒng)的運(yùn)行狀態(tài)進(jìn)行有效監(jiān)控,還需要引入一些并不好用的外部框架。
而使用了 Spring Boot 框架,因?yàn)樗苯咏鉀Q了使配置 、 編程 、 部署 、 監(jiān)控 ,好用、簡(jiǎn)單又高效。
越來(lái)越強(qiáng)大的 Spring Boot 儼然是 Java EE 領(lǐng)域的標(biāo)準(zhǔn)開發(fā)框架了。熟練掌握 Spring Boot 中的各項(xiàng)技術(shù)組件,并能夠在一定程度上掌握其內(nèi)部運(yùn)行機(jī)制,是從事 Java 應(yīng)用程序開發(fā)的基本要求,也是學(xué)習(xí) Spring Cloud 等微服務(wù)開發(fā)框架的基礎(chǔ)。
Spring 框架自 2003 年由 Rod Johnson 設(shè)計(jì)并實(shí)現(xiàn)以來(lái),經(jīng)歷了多個(gè)重大版本的發(fā)展和演進(jìn),已經(jīng)形成了一個(gè)龐大的家族式技術(shù)生態(tài)圈。目前,Spring 已經(jīng)是 Java EE 領(lǐng)域最流行的開發(fā)框架,在全球各大企業(yè)中都得到了廣泛應(yīng)用。
讓我們先來(lái)看一下 Spring 家族技術(shù)生態(tài)的全景圖。
訪問 下Spring 的官方網(wǎng)站 https://spring.io/
從圖中可以看到,這里羅列了 Spring 框架的七大核心技術(shù)體系,分別是微服務(wù)架構(gòu)、響應(yīng)式編程、云原生、Web 應(yīng)用、Serverless 架構(gòu)、事件驅(qū)動(dòng)以及批處理
這些技術(shù)體系各自獨(dú)立但也有一定交集,例如微服務(wù)架構(gòu)往往會(huì)與基于 Spring Cloud 的云原生技術(shù)結(jié)合在一起使用,而微服務(wù)架構(gòu)的構(gòu)建過程也需要依賴于能夠提供 RESTful 風(fēng)格的 Web 應(yīng)用程序等。
另一方面,在具備特定的技術(shù)特點(diǎn)之外,這些技術(shù)體系也各有其應(yīng)用場(chǎng)景。
舉個(gè)例子
如果我們想要實(shí)現(xiàn)日常報(bào)表等輕量級(jí)的批處理任務(wù),而又不想引入 Hadoop 這套龐大的離線處理平臺(tái)時(shí),使用基于 Spring Batch 的批處理框架是一個(gè)不錯(cuò)的選擇
如果想要實(shí)現(xiàn)與 Kafka、RabbitMQ 等各種主流消息中間件之間的集成,屏蔽這些中間件在使用上的差別,那么使用基于 Spring Cloud Stream 的事件驅(qū)動(dòng)架構(gòu)對(duì)外提供了統(tǒng)一的 API, 屏蔽了內(nèi)部各個(gè)中間件在實(shí)現(xiàn)上的差異性。
在日常開發(fā)過程中,如果構(gòu)建單塊 Web 服務(wù),可以采用 Spring Boot。如果想要開發(fā)微服務(wù)架構(gòu),那么就需要使用基于 Spring Boot 的 Spring Cloud,而 Spring Cloud 同樣內(nèi)置了基于 Spring Cloud Stream 的事件驅(qū)動(dòng)架構(gòu)。
同時(shí), 特別強(qiáng)調(diào)的是響應(yīng)式編程技術(shù)。響應(yīng)式編程是 Spring 5 引入的最大創(chuàng)新,代表了一種系統(tǒng)架構(gòu)設(shè)計(jì)和實(shí)現(xiàn)的技術(shù)方向。因此,我們也將從 Spring Boot、Spring Cloud 以及 Spring 響應(yīng)式編程這三個(gè)技術(shù)體系進(jìn)行切入,看看 Spring 具體能夠?yàn)槲覀兘鉀Q開發(fā)過程中的哪些問題。
當(dāng)然,所有我們現(xiàn)在能看到的 Spring 家族技術(shù)體系都是在 Spring Framework 基礎(chǔ)上逐步演進(jìn)而來(lái)的。在介紹上述技術(shù)體系之前,我們先簡(jiǎn)單了解下 Spring Framework 的整體架構(gòu),如下圖所示:
【4.x】
Spring Boot 構(gòu)建在 Spring Framework 基礎(chǔ)之上,是新一代的 Web 應(yīng)用程序開發(fā)框架。
我們可以通過下面這張圖來(lái)了解 Spring Boot 的全貌:
通過瀏覽 Spring 的官方網(wǎng)站,我們可以看到 Spring Boot 已經(jīng)成為 Spring 中頂級(jí)的子項(xiàng)目。自 2014 年 4 月發(fā)布 1.0.0 版本以來(lái),Spring Boot 儼然已經(jīng)發(fā)展為 Java EE 領(lǐng)域開發(fā) Web 應(yīng)用程序的首選框架。
先來(lái)感受一下使用 Spring Boot 開發(fā)一個(gè) RESTful風(fēng)格 的 HTTP 端點(diǎn)所需要做的編碼工作,如下所示:
@SpringBootApplication @RestController public class DemoApplication { @GetMapping("/helloworld") public String hello() { return "Hello World!"; } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
一個(gè)經(jīng)典的“Hello World”程序,而且使用 Spring Boot 來(lái)構(gòu)建這樣一個(gè)支持 RESTful 風(fēng)格的 Web 應(yīng)用程序只需要幾秒鐘。
一旦創(chuàng)建了一個(gè) Spring Boot 應(yīng)用程序,并添加類似上面的 DemoApplication 類,我們就可以啟動(dòng) Spring Boot 內(nèi)置的 Web 服務(wù)器并監(jiān)聽 8080 端口,剩余的一切工作 Spring Boot 都幫你自動(dòng)完成了。
Spring Boot 具備了傳統(tǒng) Spring 框架所不具備的功能特性,即支持運(yùn)行期內(nèi)嵌容器(包含 Tomcat、Jetty 等支持 Servlet 規(guī)范的多款傳統(tǒng) Web 容器)。
在最新的 Spring Boot 2.X 版本中,還提供了對(duì) Netty 以及集成 Servlet 3.1+ 的非阻塞式容器的支持?;谶\(yùn)行期內(nèi)嵌容器機(jī)制。
開發(fā)人員想要啟動(dòng)Web 服務(wù)只需要使用一行 java –jar 命令就可以了。
我們還發(fā)現(xiàn) Spring Boot 的核心功能就是自動(dòng)配置。
我們可以看到 Spring Boot 并沒有像以前使用 Spring MVC 一樣需要指定一大堆關(guān)于 HTTP 請(qǐng)求和響應(yīng)的 XML 配置。
事實(shí)上,Spring Boot 的運(yùn)行過程同樣還是依賴于 Spring MVC,但是它把原本需要開發(fā)人員指定的各種配置項(xiàng)設(shè)置了默認(rèn)值,并內(nèi)置在了運(yùn)行時(shí)環(huán)境中,例如默認(rèn)的服務(wù)器端口就是 8080,如果我們不需要對(duì)這些配置項(xiàng)有定制化需求,就可以不做任何的處理,采用既定的開發(fā)約定即可。這就是 Spring Boot 所倡導(dǎo)的約定優(yōu)于配置(Convention over Configuration)設(shè)計(jì)理念。
另外,相較傳統(tǒng)的 Spring 框架,Spring Boot 的一大亮點(diǎn)是引入了內(nèi)置的監(jiān)控機(jī)制,這是通過 Actuator 組件(常見的包括內(nèi)存信息、JVM 信息、垃圾回收信息等)來(lái)實(shí)現(xiàn)的?;?Actuator 組件,一方面我們可以查看包含自動(dòng)配置在內(nèi)的應(yīng)用程序詳細(xì)信息,另一方面可以實(shí)時(shí)監(jiān)控該應(yīng)用程序的運(yùn)行時(shí)健康狀態(tài)。
可以看到,Spring Boot 的上述功能實(shí)際上從多個(gè)維度簡(jiǎn)化了 Web 應(yīng)用程序的開關(guān)過程,這些維度包含編碼、配置、部署和監(jiān)控等。
Spring Cloud 構(gòu)建在 Spring Boot 基礎(chǔ)之上,它的整體架構(gòu)圖如下所示:
技術(shù)組件的完備性是 Spring Cloud 框架的主要優(yōu)勢(shì),它集成了業(yè)界一大批知名的微服務(wù)開發(fā)組件。Spring Cloud 的核心組件如下圖所示
可以看到,基于 Spring Boot 的開發(fā)便利性,Spring Cloud 巧妙地簡(jiǎn)化了微服務(wù)系統(tǒng)基礎(chǔ)設(shè)施的開發(fā)過程,Spring Cloud 包含上圖中所展示的服務(wù)發(fā)現(xiàn)注冊(cè)、API 網(wǎng)關(guān)、配置中心、消息總線、負(fù)載均衡、熔斷器、數(shù)據(jù)監(jiān)控等
隨著 Spring 5 的正式發(fā)布,我們迎來(lái)了響應(yīng)式編程(Reactive Programming)的全新發(fā)展時(shí)期。Spring 5 中內(nèi)嵌了與數(shù)據(jù)管理相關(guān)的響應(yīng)式數(shù)據(jù)訪問、與系統(tǒng)集成相關(guān)的響應(yīng)式消息通信以及與 Web 服務(wù)相關(guān)的響應(yīng)式 Web 框架等多種響應(yīng)式組件,從而極大地簡(jiǎn)化了響應(yīng)式應(yīng)用程序的開發(fā)過程和開發(fā)難度。
下圖展示了響應(yīng)式編程的技術(shù)棧與傳統(tǒng)的 Servlet 技術(shù)棧之間的對(duì)比:
從上圖可以看到,上圖左側(cè)為基于 Spring WebFlux 的技術(shù)棧,右側(cè)為基于 Spring MVC 的技術(shù)棧。我們知道傳統(tǒng)的 Spring MVC 構(gòu)建在 Java EE 的 Servlet 標(biāo)準(zhǔn)之上,該標(biāo)準(zhǔn)本身就是阻塞式和同步的,而 Spring WebFlux 基于響應(yīng)式流,因此可以用來(lái)構(gòu)建異步非阻塞的服務(wù)。
在 Spring 5 中,選取了 Project Reactor 作為響應(yīng)式流的實(shí)現(xiàn)庫(kù)。由于響應(yīng)式編程的特性,Spring WebFlux 和 Project Reactor 的運(yùn)行需要依賴于諸如 Netty 和 Undertow 等支持異步機(jī)制的容器。同時(shí)我們也可以選擇使用較新版本的 Tomcat 和 Jetty 作為運(yùn)行環(huán)境,因?yàn)樗鼈冎С之惒?I/O 的 Servlet 3.1。
下圖更加明顯地展示了 Spring MVC 和 Spring WebFlux 之間的區(qū)別和聯(lián)系:
在基于 Spring Boot 以及 Spring Cloud 的應(yīng)用程序中,Spring WebFlux 和 Spring MVC 可以混合進(jìn)行使用。
我們主要圍繞 Spring Boot 框架展開討論,分別從配置體系、數(shù)據(jù)訪問、Web 服務(wù)、消息通信、系統(tǒng)安全、系統(tǒng)監(jiān)控、應(yīng)用測(cè)試等維度對(duì)該框架進(jìn)行深入的剖析,所采用的版本為 2.2.X 版。
系統(tǒng)分析了 Spring 家族的技術(shù)生態(tài),并重點(diǎn)介紹了 Spring Boot、Spring Cloud 和 Spring 響應(yīng)式編程這三大技術(shù)體系。從技術(shù)演進(jìn)的過程和趨勢(shì)而言,這些工具和框架的出現(xiàn)有其必然性。Spring Boot 是對(duì)傳統(tǒng) Spring MVC 的改進(jìn),Spring Cloud 基于 Spring Boot 構(gòu)建微服務(wù)架構(gòu),而響應(yīng)式編程則代表未來(lái)技術(shù)的發(fā)展方向。
Java的基本數(shù)據(jù)類型分為:1、整數(shù)類型,用來(lái)表示整數(shù)的數(shù)據(jù)類型。2、浮點(diǎn)類型,用來(lái)表示小數(shù)的數(shù)據(jù)類型。3、字符類型,字符類型的關(guān)鍵字是“char”。4、布爾類型,是表示邏輯值的基本數(shù)據(jù)類型。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Java Springboot之Spring家族的技術(shù)體系是什么”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。