日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

springboot 学习之路 18(webflux详细介绍(2))

發(fā)布時(shí)間:2023/12/13 综合教程 41 生活家
生活随笔 收集整理的這篇文章主要介紹了 springboot 学习之路 18(webflux详细介绍(2)) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

webflux的詳細(xì)介紹

  引言:上一節(jié)已經(jīng)簡(jiǎn)單介紹webflux的一些基本概念,本章繼續(xù)學(xué)習(xí)webflux的原理和實(shí)戰(zhàn)方面的東西:

  Spring WebFlux架構(gòu):

    

    note:注意理解上面這張圖。下面解釋引用百度

1)服務(wù)端技術(shù)棧

    Spring提供了完整的支持響應(yīng)式的服務(wù)端技術(shù)棧。

            如上圖所示,左側(cè)為基于spring-webmvc的技術(shù)棧,右側(cè)為基于spring-webflux的技術(shù)棧,

            Spring WebFlux是基于響應(yīng)式流的,因此可以用來建立異步的、非阻塞的、事件驅(qū)動(dòng)的服務(wù)。它采用Reactor作為首選的響應(yīng)式流的實(shí)現(xiàn)庫,不過也提供了對(duì)RxJava的支持。
            由于響應(yīng)式編程的特性,Spring WebFlux和Reactor底層需要支持異步的運(yùn)行環(huán)境,比如Netty和Undertow;也可以運(yùn)行在支持異步I/O的Servlet 3.1的容器之上,比如Tomcat(8.0.23及以上)和Jetty(9.0.4及以上)。
            從圖的縱向上看,spring-webflux上層支持兩種開發(fā)模式: 
            類似于Spring WebMVC的基于注解(@Controller、@RequestMapping)的開發(fā)模式;
            Java 8 lambda 風(fēng)格的函數(shù)式開發(fā)模式。
            Spring WebFlux也支持響應(yīng)式的Websocket服務(wù)端開發(fā)。
            由此看來,Spring WebFlux與Vert.x有一些相通之處,都是建立在非阻塞的異步I/O和事件驅(qū)動(dòng)的基礎(chǔ)之上的。
2)響應(yīng)式Http客戶端

    此外,Spring WebFlux也提供了一個(gè)響應(yīng)式的Http客戶端API WebClient。它可以用函數(shù)式的方式異步非阻塞地發(fā)起Http請(qǐng)求并處理響應(yīng)。其底層也是由Netty提供的異步支持。

            我們可以把WebClient看做是響應(yīng)式的RestTemplate,與后者相比,前者:

            是非阻塞的,可以基于少量的線程處理更高的并發(fā);
            可以使用Java 8 lambda表達(dá)式;
            支持異步的同時(shí)也可以支持同步的使用方式;
            可以通過數(shù)據(jù)流的方式與服務(wù)端進(jìn)行雙向通信。
            當(dāng)然,與服務(wù)端對(duì)應(yīng)的,Spring WebFlux也提供了響應(yīng)式的Websocket客戶端API。

springboot_webflux demo案例:

  根據(jù)上面原理圖 webflux的實(shí)現(xiàn)有兩版,一是基于springmvc,一種基于響應(yīng)式流的,,下面我來逐一介紹一下:(需要學(xué)習(xí)的盡量跟著我的步驟走,我會(huì)把出錯(cuò)的地方標(biāo)出

  基礎(chǔ)部分搭建(不管哪種實(shí)現(xiàn),都需要項(xiàng)目準(zhǔn)備工作):

    第一步:引入項(xiàng)目依賴,我后期會(huì)演示mongodb的操作,這次一下把依賴都引入:

      

    第二步:把a(bǔ)llpication.yml 的mongodb配置上,

      

  

從webflux開始,我的demo采用yaml語法的配置文件來講解,前面采用的都是properties文件,是為了大家方便入門,后期我采用application.yml文件,
  補(bǔ)充:配置文件的優(yōu)先順序: 項(xiàng)目路徑下/conf/ > 項(xiàng)目路徑下/ > /resources/conf/ > resources/ ( properties后綴優(yōu)先 yml文件的加載順序)

  1>注解式:

    1>> 只是為了測(cè)試,直接寫測(cè)試控制器了,實(shí)戰(zhàn)中應(yīng)該從Handler中獲取

    

    2>> 啟動(dòng)springboot項(xiàng)目:

      是netty啟動(dòng),上節(jié)介紹過,webflux是響應(yīng)式框架,默認(rèn)是netty啟動(dòng)(可以改tomcat toncat8以后已經(jīng)支持響應(yīng)式了)

      請(qǐng)求測(cè)試如下:

      

    

Netty是一套異步的、事件驅(qū)動(dòng)的網(wǎng)絡(luò)應(yīng)用程序框架和工具,能夠開發(fā)高性能、高可靠性的網(wǎng)絡(luò)服務(wù)器和客戶端程序,因此與同樣是異步的、事件驅(qū)動(dòng)的響應(yīng)式編程范式吻合。
  在Java 7推出異步I/O庫,以及Servlet3.1增加了對(duì)異步I/O的支持之后,Tomcat等Servlet容器也隨后開始支持異步I/O,然后Spring WebMVC也增加了對(duì)Reactor庫的支持,
  所以上邊如果不是將spring-boot-starter-web替換為spring-boot-starter-WebFlux,而是增加reactor-core的依賴的話,仍然可以用注解的方式開發(fā)基于Tomcat的響應(yīng)式應(yīng)用。

  注解式就簡(jiǎn)單介紹一下,重點(diǎn)在響應(yīng)式開發(fā),webflux是響應(yīng)式框架,我會(huì)著重介紹一下響應(yīng)式開發(fā)的步驟。注解式只是spring團(tuán)隊(duì)為了更好的遷移而提供給大家的,因?yàn)槲覀兌际怯蒙厦婺欠N開發(fā)方式開發(fā)代碼  

  2>webflux的響應(yīng)式開發(fā):

    響應(yīng)式開發(fā)主要在handler和route上,handler相當(dāng)于我們?cè)瓉硎褂玫?server | controller 官方定義是處理,就是寫邏輯代碼的地方,而route相當(dāng)于RequestMapping() 相當(dāng)于配置映射的地方,官方定義是路由

    2.1>測(cè)試handler如下:?。ǚ椒☉?yīng)該從數(shù)據(jù)獲取數(shù)據(jù)進(jìn)行返回,我只是做測(cè)試,就用打印時(shí)間代替了)

     

    2.2> 編輯route 

       

    2.3>啟動(dòng),測(cè)試:

      

在WebFlux中,請(qǐng)求和響應(yīng)不再是WebMVC中的ServletRequest和ServletResponse,而是ServerRequest和ServerResponse。后者是在響應(yīng)式編程中使用的接口,它們提供了對(duì)非阻塞和回壓特性的支持,以及Http消息體與響應(yīng)式類型Mono和Flux的轉(zhuǎn)換方法。

    注意:到這,webflux的響應(yīng)式開發(fā)配置基本搭建完畢,后面會(huì)繼續(xù)介紹mongodb的操作


webflux操作mongodb:

  webflux不支持mysql,  使用mongodb來進(jìn)行演示 (mongodb配置已經(jīng)在準(zhǔn)備時(shí)配置進(jìn)去了)   

  第一步:創(chuàng)建實(shí)體User

   

  在這個(gè)mongodb的啟動(dòng)后,會(huì)自動(dòng)在對(duì)應(yīng)的mongodb中創(chuàng)建一個(gè)user集合,名字就是實(shí)體類名稱小寫。

  第二步:dao實(shí)現(xiàn):  

    note:與非響應(yīng)式Spring Data的CrudReposity對(duì)應(yīng)的,響應(yīng)式的Spring Data也提供了相應(yīng)的Repository庫:ReactiveCrudReposity,當(dāng)然,我們也可以使用它的子接口ReactiveMongoRepository

       ReactiveCrudRepository的泛型分別是UserID的類型;

    

  第三步:UserHandler(邏輯處理代碼)

    

  第四步:webFlux的注解實(shí)現(xiàn)controller: 方便大家上手 ( 響應(yīng)式后期再說:)

    

  最后啟動(dòng)測(cè)試即可:

    截圖不放了。下面我介紹幾個(gè)問題點(diǎn): 


問題: 

  1> 怎么驗(yàn)證響應(yīng)式流:

    

    啟動(dòng)測(cè)試就可以發(fā)現(xiàn)查詢所用是一個(gè)一個(gè)出來的,而不是一下返回。

 


 異步 阻塞的概念還需要大家理解,這是服務(wù)端大效果演示,還有一種客戶端的演示,待下節(jié)介紹

總結(jié)

以上是生活随笔為你收集整理的springboot 学习之路 18(webflux详细介绍(2))的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: japanese强行粗暴 | 少妇高潮一区二区三区69 | 538国产视频 | 少妇丰满尤物大尺度写真 | 婷婷在线一区 | 四虎新网站 | 亚洲av无码精品一区二区 | 超碰最新上传 | sese在线视频| 午夜极品视频 | 欧美乱论视频 | 九九看片 | 顶级尤物极品女神福利视频 | 欧美性生活网站 | 国产精品久久久久久久久久久免费看 | 日本伦理片在线看 | 国产一二区在线观看 | 黄色一级视频免费看 | 免费在线观看一区 | 久久久免费网站 | 中文字幕88| 国产四区 | 国产精品成人免费看片 | 久久久国产成人一区二区三区 | 精品日韩一区 | 日韩av自拍| 毛片网页| 日韩操 | 国产图片区 | 丁香久久 | 超碰中文在线 | 2022av在线| 亚洲综合图片一区 | 99re视频在线播放 | 免费黄色一级视频 | 天堂成人网| 99av在线| 日韩精品中文字幕在线观看 | 美乳人妻一区二区三区 | 免费国产一级 | 福利视频网址 | 国产亚洲精品久久久久久久久动漫 | 五月婷婷在线视频 | 精品一区久久 | 日韩在线小视频 | 国产一区二区精品在线观看 | av先锋在线| 国产精品入口免费 | 久久三 | 国产av 一区二区三区 | 光溜溜视频素材大全美女 | 亚洲成人18 | 在线cao| 日本日皮视频 | 日本成人综合 | 日本精品视频在线观看 | 红桃视频国产 | 久久av影视 | 免费在线观看视频a | 性一交一乱一伧老太 | 福利在线视频观看 | 美女伦理水蜜桃4 | 欧美高清一区 | 日本激情影院 | 日韩在线不卡av | 久久久久久九九九九九 | 国产a毛片 | 欧美精品韩国精品 | 性色av一区二区三区四区 | 成人一区二区在线 | av在线色| 免费看一级黄色大片 | 日本精品一区二区三区四区的功能 | 91偷拍网| 91视频免费视频 | 免费黄色资源 | 97爱爱视频 | 中文字幕+乱码+中文字幕明步 | 78日本xxxxxxxxx59 亚洲图片小说视频 | 亚洲剧情av | eeuss鲁丝片一区二区三区 | 夜间福利在线观看 | 成av人在线| 极品探花在线播放 | 国产精品一区二区不卡 | 久久不射电影网 | 亚洲视频日韩 | 福利视频99| 久草视频免费播放 | 欧美日韩亚洲另类 | 国产suv精品一区二区6 | 欧美极品jizzhd欧美爆 | 最好看的日本字幕mv视频大全 | 操少妇视频 | 亚洲免费中文 | 国产成人精品一区二区三区无码熬 | 天天干天天看 | 在线看黄免费 | 秘密基地电影免费版观看国语 |