99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

如何在SpringBoot中使用Webflux-創新互聯

這篇文章主要介紹“如何在Spring Boot中使用Webflux”,在日常操作中,相信很多人在如何在Spring Boot中使用Webflux問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何在Spring Boot中使用Webflux”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

創新互聯建站專注于企業成都全網營銷、網站重做改版、東蘭網站定制設計、自適應品牌網站建設、H5網站設計、電子商務商城網站建設、集團公司官網建設、外貿網站制作、高端網站制作、響應式網頁設計等建站業務,價格優惠性價比高,為東蘭等各大城市提供網站開發制作服務。

為了方便大家理解,我們先來了解幾個概念。

響應式編程

在計算機中,響應式編程或反應式編程(英語:Reactive programming)是一種面向數據流和變化傳播的編程范式。這意味著可以在編程語言中很方便地表達靜態或動態的數據流,而相關的計算模型會自動將變化的值通過數據流進行傳播。

例如,在命令式編程環境中,a=b+c 表示將表達式的結果賦給 a,而之后改變 b 或 c 的值不會影響 a 。但在響應式編程中,a 的值會隨著 b 或 c 的更新而更新。

響應式編程是基于異步和事件驅動的非阻塞程序,只需要在程序內啟動少量線程擴展,而不是水平通過集群擴展。

用大白話講,我們以前編寫的大部分都是阻塞類的程序,當一個請求過來時任務會被阻塞,直到這個任務完成后再返回給前端;響應式編程接到請求后只是提交了一個請求給后端,后端會再安排另外的線程去執行任務,當任務執行完成后再異步通知到前端。

Reactor

Java 領域的響應式編程庫中,最有名的算是 Reactor 了。Reactor 也是 Spring 5 中反應式編程的基礎,Webflux 依賴 Reactor 而構建。

Reactor 是一個基于 JVM 之上的異步應用基礎庫。為 Java 、Groovy 和其他 JVM 語言提供了構建基于事件和數據驅動應用的抽象庫。Reactor 性能相當高,在最新的硬件平臺上,使用無堵塞分發器每秒鐘可處理 1500 萬事件。

簡單說,Reactor 是一個輕量級 JVM 基礎庫,幫助你的服務或應用高效,異步地傳遞消息。Reactor 中有兩個非常重要的概念 Flux 和 Mono 。

Flux 和 Mono

Flux 和 Mono 是 Reactor 中的兩個基本概念。Flux 表示的是包含 0 到 N 個元素的異步序列。在該序列中可以包含三種不同類型的消息通知:正常的包含元素的消息、序列結束的消息和序列出錯的消息。當消息通知產生時,訂閱者中對應的方法 onNext(), onComplete()和 onError()會被調用。

Mono 表示的是包含 0 或者 1 個元素的異步序列。該序列中同樣可以包含與 Flux 相同的三種類型的消息通知。Flux 和 Mono 之間可以進行轉換。對一個 Flux 序列進行計數操作,得到的結果是一個 Mono

WebFlux 是什么?

WebFlux 模塊的名稱是 spring-webflux,名稱中的 Flux 來源于 Reactor 中的類 Flux。Spring webflux 有一個全新的非堵塞的函數式 Reactive Web 框架,可以用來構建異步的、非堵塞的、事件驅動的服務,在伸縮性方面表現非常好。

非阻塞的關鍵預期好處是能夠以小的固定數量的線程和較少的內存進行擴展。在服務器端 WebFlux 支持2種不同的編程模型:

  • 基于注解的 @Controller 和其他注解也支持 Spring MVC

  • Functional 、Java 8 lambda 風格的路由和處理

如圖所示,WebFlux 模塊從上到下依次是 Router Functions、WebFlux、Reactive Streams 三個新組件。

  • Router Functions
    對標準的 @Controller,@RequestMapping 等的 Spring MVC 注解,提供一套 函數式風格的 API,用于創建 Router、Handler 和Filter。

  • WebFlux
    核心組件,協調上下游各個組件提供 響應式編程 支持。

  • Reactive Streams
    一種支持 背壓 (Backpressure) 的 異步數據流處理標準,主流實現有 RxJava 和 Reactor,Spring WebFlux 集成的是 Reactor。

默認情況下,Spring Boot 2 使用 Netty WebFlux,因為 Netty 在異步非阻塞空間中被廣泛使用,異步非阻塞連接可以節省更多的資源,提供更高的響應度。通過比較 Servlet 3.1 非阻塞 I / O 沒有太多的使用,因為使用它的成本比較高,Spring WebFlux 打開了一條實用的通路。

值得注意的是:支持 reactive 編程的數據庫只有 MongoDB, redis, Cassandra, Couchbase

Spring Webflux

Spring Boot 2.0 包括一個新的 spring-webflux 模塊。該模塊包含對響應式 HTTP 和 WebSocket 客戶端的支持,以及對 REST,HTML 和 WebSocket 交互等程序的支持。一般來說,Spring MVC 用于同步處理,Spring Webflux 用于異步處理。

Spring Boot Webflux 有兩種編程模型實現,一種類似 Spring MVC 注解方式,另一種是基于 Reactor 的響應式方式。

快速上手

添加 webflux 依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>

通過 IEDA 的依賴關系圖我們可以返現spring-boot-starter-webflux依賴于spring-webflux、Reactor 和 Netty 相關依賴包。

創建 Controller

@RestController
public class HelloController {

    @GetMapping("/hello")
    public Mono<String> hello() {
        return Mono.just("Welcome to reactive world ~");
    }
}

通過上面的示例可以發現,開發模式和之前 Spring Mvc 的模式差別不是很大,只是在方法的返回值上有所區別。

  • just() 方法可以指定序列中包含的全部元素。

  • 響應式編程的返回值必須是 Flux 或者 Mono ,兩者之間可以相互轉換。

測試類

@RunWith(SpringRunner.class)
@WebFluxTest(controllers = HelloController.class)
public class HelloTests {
    @Autowired
    WebTestClient client;

    @Test
    public void getHello() {
        client.get().uri("/hello").exchange().expectStatus().isOk();
    }
}

運行測試類,測試用例通過表示服務正常。啟動項目后,訪問地址:http://localhost:8080/hello,頁面返回信息:

Welcome to reactive world ~

證明 Webflux 集成成功。

到此,關于“如何在Spring Boot中使用Webflux”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注創新互聯-成都網站建設公司網站,小編會繼續努力為大家帶來更多實用的文章!

網站名稱:如何在SpringBoot中使用Webflux-創新互聯
分享URL:http://www.yijiale78.com/article24/ccdpje.html

成都網站建設公司_創新互聯,為您提供電子商務面包屑導航網站收錄品牌網站設計、企業建站、網站改版

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站優化排名