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