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