国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

Java Springboot之Spring家族的技術(shù)體系

發(fā)布時(shí)間:2021-07-05 18:40 來(lái)源:腳本之家 閱讀:0 作者:小小工匠 欄目: 開(kāi)發(fā)技術(shù)

目錄

一、Why

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 家族技術(shù)生態(tài)全景圖

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è)例子

  • 如果我們想要實(shí)現日常報表等輕量級的批處理任務(wù),而又不想引入 Hadoop 這套龐大的離線(xiàn)處理平臺時(shí),使用基于 Spring Batch 的批處理框架是一個(gè)不錯的選擇
  • 如果想要實(shí)現與 Kafka、RabbitMQ 等各種主流消息中間件之間的集成,屏蔽這些中間件在使用上的差別,那么使用基于 Spring Cloud Stream 的事件驅動(dòng)架構對外提供了統一的 API, 屏蔽了內部各個(gè)中間件在實(shí)現上的差異性。

在日常開(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 Framework 的整體架構

當然,所有我們現在能看到的 Spring 家族技術(shù)體系都是在 Spring Framework 基礎上逐步演進(jìn)而來(lái)的。在介紹上述技術(shù)體系之前,我們先簡(jiǎn)單了解下 Spring Framework 的整體架構,如下圖所示:

【4.x】

四、Spring Boot 與 Web 應用程序

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)完成了。

五、支持運行期內嵌容器(傳統 Web 容器& 非阻塞式容器)

Spring Boot 具備了傳統 Spring 框架所不具備的功能特性,即支持運行期內嵌容器(包含 Tomcat、Jetty 等支持 Servlet 規范的多款傳統 Web 容器)。

在最新的 Spring Boot 2.X 版本中,還提供了對 Netty 以及集成 Servlet 3.1+ 的非阻塞式容器的支持?;谶\行期內嵌容器機制。

開(kāi)發(fā)人員想要啟動(dòng)Web 服務(wù)只需要使用一行 java –jar 命令就可以了。

六、自動(dòng)配置

我們還發(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 (Netflix)與微服務(wù)架構

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)、負載均衡、熔斷器、數據監控等

九、Spring 5 與響應式編程

隨著(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í),將立刻刪除涉嫌侵權內容。

jav
亚洲午夜无码久久久久小说| 欧美无砖专区一中文字| 波多野结衣AV无码| 人妻无码一区二区三区 TV| 国产精品久久777777| 亚洲国产精品ⅴa在线观看|