欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何在SpringBoot中使用Webflux-創(chuàng)新互聯(lián)

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

創(chuàng)新互聯(lián)建站專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、東蘭網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、電子商務(wù)商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為東蘭等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

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

響應(yīng)式編程

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

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

響應(yīng)式編程是基于異步和事件驅(qū)動的非阻塞程序,只需要在程序內(nèi)啟動少量線程擴(kuò)展,而不是水平通過集群擴(kuò)展。

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

Reactor

Java 領(lǐng)域的響應(yīng)式編程庫中,最有名的算是 Reactor 了。Reactor 也是 Spring 5 中反應(yīng)式編程的基礎(chǔ),Webflux 依賴 Reactor 而構(gòu)建。

Reactor 是一個(gè)基于 JVM 之上的異步應(yīng)用基礎(chǔ)庫。為 Java 、Groovy 和其他 JVM 語言提供了構(gòu)建基于事件和數(shù)據(jù)驅(qū)動應(yīng)用的抽象庫。Reactor 性能相當(dāng)高,在最新的硬件平臺上,使用無堵塞分發(fā)器每秒鐘可處理 1500 萬事件。

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

Flux 和 Mono

Flux 和 Mono 是 Reactor 中的兩個(gè)基本概念。Flux 表示的是包含 0 到 N 個(gè)元素的異步序列。在該序列中可以包含三種不同類型的消息通知:正常的包含元素的消息、序列結(jié)束的消息和序列出錯(cuò)的消息。當(dāng)消息通知產(chǎn)生時(shí),訂閱者中對應(yīng)的方法 onNext(), onComplete()和 onError()會被調(diào)用。

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

WebFlux 是什么?

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

非阻塞的關(guān)鍵預(yù)期好處是能夠以小的固定數(shù)量的線程和較少的內(nèi)存進(jìn)行擴(kuò)展。在服務(wù)器端 WebFlux 支持2種不同的編程模型:

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

  • Functional 、Java 8 lambda 風(fēng)格的路由和處理

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

  • Router Functions
    對標(biāo)準(zhǔn)的 @Controller,@RequestMapping 等的 Spring MVC 注解,提供一套 函數(shù)式風(fēng)格的 API,用于創(chuàng)建 Router、Handler 和Filter。

  • WebFlux
    核心組件,協(xié)調(diào)上下游各個(gè)組件提供 響應(yīng)式編程 支持。

  • Reactive Streams
    一種支持 背壓 (Backpressure) 的 異步數(shù)據(jù)流處理標(biāo)準(zhǔn),主流實(shí)現(xiàn)有 RxJava 和 Reactor,Spring WebFlux 集成的是 Reactor。

默認(rèn)情況下,Spring Boot 2 使用 Netty WebFlux,因?yàn)?Netty 在異步非阻塞空間中被廣泛使用,異步非阻塞連接可以節(jié)省更多的資源,提供更高的響應(yīng)度。通過比較 Servlet 3.1 非阻塞 I / O 沒有太多的使用,因?yàn)槭褂盟某杀颈容^高,Spring WebFlux 打開了一條實(shí)用的通路。

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

Spring Webflux

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

Spring Boot Webflux 有兩種編程模型實(shí)現(xiàn),一種類似 Spring MVC 注解方式,另一種是基于 Reactor 的響應(yīng)式方式。

快速上手

添加 webflux 依賴

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

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

創(chuàng)建 Controller

@RestController
public class HelloController {

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

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

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

  • 響應(yīng)式編程的返回值必須是 Flux 或者 Mono ,兩者之間可以相互轉(zhuǎn)換。

測試類

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

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

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

Welcome to reactive world ~

證明 Webflux 集成成功。

到此,關(guān)于“如何在Spring Boot中使用Webflux”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

網(wǎng)站名稱:如何在SpringBoot中使用Webflux-創(chuàng)新互聯(lián)
分享URL:http://aaarwkj.com/article24/ccdpje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、面包屑導(dǎo)航網(wǎng)站收錄、品牌網(wǎng)站設(shè)計(jì)企業(yè)建站、網(wǎng)站改版

廣告

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

網(wǎng)站優(yōu)化排名
国产一区二区黄色录像| 日韩欧美亚洲福利在线| 亚洲av一区二区三区| 国产又大又黄又粗的黄色| 久久精品国产亚洲成人av| 免费在线观看欧美色妇| 国产亚洲一区二区三区成人| 九九热在线视频观看最新| 天天操天天射夜夜撸| 夫妻过性生活视频播放| 少妇视频资源一区二区三区| 国产精品亚洲伦理在线| 国产女片xb内射在线| 国产精品兄妹在线观看91| 国产好大好爽在线免费观看| 免费的黄色片带中文字幕| 久久亚洲天堂av丁香| 久久精品一偷一偷国产| 香蕉夜夜草草久久亚洲香蕉| 人妻一本久道久久综合鬼色| 99热这里在线只有精品| 最新亚洲av熟女播放| 国产欧美激情一区二区 | 激情四射五月天亚洲婷婷| 人人妻人人澡人人爽的视频| 可以免费看黄的网久久| 免费毛片一区二区三区四区| 午夜福利尤物一区二区| 国产精品日韩欧美亚洲| 中文字幕在线日韩av| 凹凸69堂国产成人精品| 亚洲欧美制服另类国产| 熟女一区二区蜜桃视频| 国产亚洲精品麻豆一区二区| 最新日韩精品电影在线网| 国产九色91中文在线视频| 国产成人大片一区二区三区| 中文国产人精品久久蜜桃| 国产精品免费观看在线国产| 少妇欧美日韩精品在线观看| 日日骚岛国中文字幕av|