- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) >
- Java Springboot之Spring家族的技術(shù)體系
Spring Boot 在傳統 Spring 框架的基礎上做了創(chuàng )新和優(yōu)化,將開(kāi)發(fā)人員從以往煩瑣的配置工作中解放出來(lái),并提供了大量即插即用的集成化組件,從而解決了各種組件之間復雜的整合過(guò)程,大大提高了開(kāi)發(fā)效率,降低了維護成本。
比如, 原本使用的是 Spring MVC 框架, 在整個(gè)開(kāi)發(fā)過(guò)程中,除了需要編寫(xiě)一大堆配置文件、針對每個(gè)層次引入專(zhuān)門(mén)的開(kāi)發(fā)組件外,還需要獨立部署和管理應用服務(wù)器。最后,為了對系統的運行狀態(tài)進(jìn)行有效監控,還需要引入一些并不好用的外部框架。
而使用了 Spring Boot 框架,因為它直接解決了使配置 、 編程 、 部署 、 監控 ,好用、簡(jiǎn)單又高效。
越來(lái)越強大的 Spring Boot 儼然是 Java EE 領(lǐng)域的標準開(kāi)發(fā)框架了。熟練掌握 Spring Boot 中的各項技術(shù)組件,并能夠在一定程度上掌握其內部運行機制,是從事 Java 應用程序開(kāi)發(fā)的基本要求,也是學(xué)習 Spring Cloud 等微服務(wù)開(kāi)發(fā)框架的基礎。
Spring 框架自 2003 年由 Rod Johnson 設計并實(shí)現以來(lái),經(jīng)歷了多個(gè)重大版本的發(fā)展和演進(jìn),已經(jīng)形成了一個(gè)龐大的家族式技術(shù)生態(tài)圈。目前,Spring 已經(jīng)是 Java EE 領(lǐng)域最流行的開(kāi)發(fā)框架,在全球各大企業(yè)中都得到了廣泛應用。
讓我們先來(lái)看一下 Spring 家族技術(shù)生態(tài)的全景圖。
訪(fǎng)問(wèn) 下Spring 的官方網(wǎng)站
從圖中可以看到,這里羅列了 Spring 框架的七大核心技術(shù)體系,分別是微服務(wù)架構、響應式編程、云原生、Web 應用、Serverless 架構、事件驅動(dòng)以及批處理
這些技術(shù)體系各自獨立但也有一定交集,例如微服務(wù)架構往往會(huì )與基于 Spring Cloud 的云原生技術(shù)結合在一起使用,而微服務(wù)架構的構建過(guò)程也需要依賴(lài)于能夠提供 RESTful 風(fēng)格的 Web 應用程序等。
另一方面,在具備特定的技術(shù)特點(diǎn)之外,這些技術(shù)體系也各有其應用場(chǎng)景。
舉個(gè)例子
在日常開(kāi)發(fā)過(guò)程中,如果構建單塊 Web 服務(wù),可以采用 Spring Boot。如果想要開(kāi)發(fā)微服務(wù)架構,那么就需要使用基于 Spring Boot 的 Spring Cloud,而 Spring Cloud 同樣內置了基于 Spring Cloud Stream 的事件驅動(dòng)架構。
同時(shí), 特別強調的是響應式編程技術(shù)。響應式編程是 Spring 5 引入的最大創(chuàng )新,代表了一種系統架構設計和實(shí)現的技術(shù)方向。因此,我們也將從 Spring Boot、Spring Cloud 以及 Spring 響應式編程這三個(gè)技術(shù)體系進(jìn)行切入,看看 Spring 具體能夠為我們解決開(kāi)發(fā)過(guò)程中的哪些問(wèn)題。
當然,所有我們現在能看到的 Spring 家族技術(shù)體系都是在 Spring Framework 基礎上逐步演進(jìn)而來(lái)的。在介紹上述技術(shù)體系之前,我們先簡(jiǎn)單了解下 Spring Framework 的整體架構,如下圖所示:
【4.x】
Spring Boot 構建在 Spring Framework 基礎之上,是新一代的 Web 應用程序開(kāi)發(fā)框架。
我們可以通過(guò)下面這張圖來(lái)了解 Spring Boot 的全貌:
通過(guò)瀏覽 Spring 的官方網(wǎng)站,我們可以看到 Spring Boot 已經(jīng)成為 Spring 中頂級的子項目。自 2014 年 4 月發(fā)布 1.0.0 版本以來(lái),Spring Boot 儼然已經(jīng)發(fā)展為 Java EE 領(lǐng)域開(kāi)發(fā) Web 應用程序的首選框架。
先來(lái)感受一下使用 Spring Boot 開(kāi)發(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è)支持 RESTful 風(fēng)格的 Web 應用程序只需要幾秒鐘。
一旦創(chuàng )建了一個(gè) Spring Boot 應用程序,并添加類(lèi)似上面的 DemoApplication 類(lèi),我們就可以啟動(dòng) Spring Boot 內置的 Web 服務(wù)器并監聽(tīng) 8080 端口,剩余的一切工作 Spring Boot 都幫你自動(dòng)完成了。
Spring Boot 具備了傳統 Spring 框架所不具備的功能特性,即支持運行期內嵌容器(包含 Tomcat、Jetty 等支持 Servlet 規范的多款傳統 Web 容器)。
在最新的 Spring Boot 2.X 版本中,還提供了對 Netty 以及集成 Servlet 3.1+ 的非阻塞式容器的支持?;谶\行期內嵌容器機制。
開(kāi)發(fā)人員想要啟動(dòng)Web 服務(wù)只需要使用一行 java –jar 命令就可以了。
我們還發(fā)現 Spring Boot 的核心功能就是自動(dòng)配置。
我們可以看到 Spring Boot 并沒(méi)有像以前使用 Spring MVC 一樣需要指定一大堆關(guān)于 HTTP 請求和響應的 XML 配置。
事實(shí)上,Spring Boot 的運行過(guò)程同樣還是依賴(lài)于 Spring MVC,但是它把原本需要開(kāi)發(fā)人員指定的各種配置項設置了默認值,并內置在了運行時(shí)環(huán)境中,例如默認的服務(wù)器端口就是 8080,如果我們不需要對這些配置項有定制化需求,就可以不做任何的處理,采用既定的開(kāi)發(fā)約定即可。這就是 Spring Boot 所倡導的約定優(yōu)于配置(Convention over Configuration)設計理念。
另外,相較傳統的 Spring 框架,Spring Boot 的一大亮點(diǎn)是引入了內置的監控機制,這是通過(guò) Actuator 組件(常見(jiàn)的包括內存信息、JVM 信息、垃圾回收信息等)來(lái)實(shí)現的?;?Actuator 組件,一方面我們可以查看包含自動(dòng)配置在內的應用程序詳細信息,另一方面可以實(shí)時(shí)監控該應用程序的運行時(shí)健康狀態(tài)。
可以看到,Spring Boot 的上述功能實(shí)際上從多個(gè)維度簡(jiǎn)化了 Web 應用程序的開(kāi)關(guān)過(guò)程,這些維度包含編碼、配置、部署和監控等。
Spring Cloud 構建在 Spring Boot 基礎之上,它的整體架構圖如下所示:
技術(shù)組件的完備性是 Spring Cloud 框架的主要優(yōu)勢,它集成了業(yè)界一大批知名的微服務(wù)開(kāi)發(fā)組件。Spring Cloud 的核心組件如下圖所示
可以看到,基于 Spring Boot 的開(kāi)發(fā)便利性,Spring Cloud 巧妙地簡(jiǎn)化了微服務(wù)系統基礎設施的開(kāi)發(fā)過(guò)程,Spring Cloud 包含上圖中所展示的服務(wù)發(fā)現注冊、API 網(wǎng)關(guān)、配置中心、消息總線(xiàn)、負載均衡、熔斷器、數據監控等
隨著(zhù) Spring 5 的正式發(fā)布,我們迎來(lái)了響應式編程(Reactive Programming)的全新發(fā)展時(shí)期。Spring 5 中內嵌了與數據管理相關(guān)的響應式數據訪(fǎng)問(wèn)、與系統集成相關(guān)的響應式消息通信以及與 Web 服務(wù)相關(guān)的響應式 Web 框架等多種響應式組件,從而極大地簡(jiǎn)化了響應式應用程序的開(kāi)發(fā)過(guò)程和開(kāi)發(fā)難度。
下圖展示了響應式編程的技術(shù)棧與傳統的 Servlet 技術(shù)棧之間的對比:
從上圖可以看到,上圖左側為基于 Spring WebFlux 的技術(shù)棧,右側為基于 Spring MVC 的技術(shù)棧。我們知道傳統的 Spring MVC 構建在 Java EE 的 Servlet 標準之上,該標準本身就是阻塞式和同步的,而 Spring WebFlux 基于響應式流,因此可以用來(lái)構建異步非阻塞的服務(wù)。
在 Spring 5 中,選取了 Project Reactor 作為響應式流的實(shí)現庫。由于響應式編程的特性,Spring WebFlux 和 Project Reactor 的運行需要依賴(lài)于諸如 Netty 和 Undertow 等支持異步機制的容器。同時(shí)我們也可以選擇使用較新版本的 Tomcat 和 Jetty 作為運行環(huán)境,因為它們支持異步 I/O 的 Servlet 3.1。
下圖更加明顯地展示了 Spring MVC 和 Spring WebFlux 之間的區別和聯(lián)系:
在基于 Spring Boot 以及 Spring Cloud 的應用程序中,Spring WebFlux 和 Spring MVC 可以混合進(jìn)行使用。
我們主要圍繞 Spring Boot 框架展開(kāi)討論,分別從配置體系、數據訪(fǎng)問(wèn)、Web 服務(wù)、消息通信、系統安全、系統監控、應用測試等維度對該框架進(jìn)行深入的剖析,所采用的版本為 2.2.X 版。
系統分析了 Spring 家族的技術(shù)生態(tài),并重點(diǎn)介紹了 Spring Boot、Spring Cloud 和 Spring 響應式編程這三大技術(shù)體系。從技術(shù)演進(jìn)的過(guò)程和趨勢而言,這些工具和框架的出現有其必然性。Spring Boot 是對傳統 Spring MVC 的改進(jìn),Spring Cloud 基于 Spring Boot 構建微服務(wù)架構,而響應式編程則代表未來(lái)技術(shù)的發(fā)展方向。
到此這篇關(guān)于Java Springboot之Spring家族的技術(shù)體系的文章就介紹到這了,更多相關(guān)Spring家族的技術(shù)體系內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站