最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot深入分析webmvc和webflux的區(qū)別

 更新時間:2023年02月02日 15:42:36   作者:ldcaws  
這篇文章主要介紹了SpringBoot深入分析webmvc和webflux的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧

webmvc和webflux作為spring framework的兩個重要模塊,代表了兩個IO模型,阻塞式和非阻塞式。

1、webmvc

webmvc是基于servlet的阻塞式模型,一個請求到達(dá)服務(wù)器后會單獨(dú)分配一個線程去處理請求,如果請求包含IO操作,線程在IO操作結(jié)束之前一直處于阻塞等待狀態(tài),這樣線程在等待IO操作結(jié)束的時間就浪費(fèi)了。

2、webflux

webflux是一個異步非阻塞式的 Web 框架,它能夠充分利用多核 CPU 的硬件資源去處理大量的并發(fā)請求。

webflux內(nèi)部使用的是響應(yīng)式編程(Reactive Programming),以 Reactor 庫為基礎(chǔ),基于異步和事件驅(qū)動,可以讓我們在不擴(kuò)充硬件資源的前提下,提升系統(tǒng)的吞吐量和伸縮性。

Reactor 是一個反應(yīng)式庫,用于根據(jù)反應(yīng)式流規(guī)范在 JVM 上構(gòu)建非阻塞應(yīng)用。它是完全非阻塞的,支持在 Netty,Undertow 和 Servlet 3.1+容器等服務(wù)器上運(yùn)行。

Reactor 項(xiàng)目提供兩種類型的發(fā)布者:

  • Flux 是產(chǎn)生 0 到 N 個值的發(fā)布者,返回多個元素的操作使用此類型;
  • Mono 是產(chǎn)生 0 到 1 值的發(fā)布者,它用于返回單個元素的操作;

3、webflux實(shí)例

添加依賴

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

添加controller

@Slf4j
@RestController
@RequestMapping("/api/user")
public class UserReactiveController {
    @RequestMapping(value = "/hello")
    public Mono<Object> hello(@RequestParam(name = "name") String name) {
        log.info("方法 hello 被調(diào)用了");
        return Mono.just("hello webflux " + name);
    }
}

測試

4、小結(jié)

  • WebFlux 并不能使接口的響應(yīng)時間縮短,它僅僅能夠提升吞吐量和伸縮性;
  • WebFlux內(nèi)部使用的是響應(yīng)式編程,以Reactor庫為基礎(chǔ),基于異步和事件驅(qū)動,特別適合應(yīng)用在IO密集型的服務(wù)中,如網(wǎng)關(guān);
  • WebFlux并不是Spring MVC的替代方案;
  • WebFlux默認(rèn)情況下使用Netty作為服務(wù)器,不支持MySQL;
  • WebFlux的前端控制器是DispatcherHandler,而Spring MVC是DispatcherServlet;
  • WebFlux支持兩種編程風(fēng)格,一種是Spring MVC的注解形式,另一種就是Java 8 Lambda函數(shù)式編程;
  • Reactor類型:Mono返回0或者1個元素,即單個對象;Flux返回N個元素,即List列表對象;
  • Webflux中沒有攔截器這個概念,要做類似的工作需要在過濾器中完成,項(xiàng)目中我們用到Token驗(yàn)證,使用方法是注冊過濾器;
  • Webflux中可以使用@ControllerAdvice注冊全局異常處理器,但它僅Controller中拋出的異常生效,無法顧及到過濾器。對異常,推薦的方式是注冊WebExceptionHandler;

到此這篇關(guān)于SpringBoot深入分析webmvc和webflux的區(qū)別的文章就介紹到這了,更多相關(guān)SpringBoot webmvc和webflux內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Java實(shí)現(xiàn)壓縮文件夾并打包下載

    使用Java實(shí)現(xiàn)壓縮文件夾并打包下載

    這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)壓縮文件夾并打包下載,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • JVM執(zhí)行引擎的項(xiàng)目實(shí)踐

    JVM執(zhí)行引擎的項(xiàng)目實(shí)踐

    執(zhí)行引擎是Java虛擬機(jī)核心的組成部分之一,本文主要介紹了JVM執(zhí)行引擎的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-04-04
  • Spring使用注解和配置文件配置事務(wù)

    Spring使用注解和配置文件配置事務(wù)

    這篇文章主要為大家詳細(xì)介紹了Spring使用注解和配置文件配置事務(wù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Java分布式鎖、分布式ID和分布式事務(wù)的實(shí)現(xiàn)方案

    Java分布式鎖、分布式ID和分布式事務(wù)的實(shí)現(xiàn)方案

    在分布式系統(tǒng)中,分布式鎖、分布式ID和分布式事務(wù)是常用的組件,用于解決并發(fā)控制、唯一標(biāo)識和數(shù)據(jù)一致性的問題,本文將介紹Java中常用的分布式鎖、分布式ID和分布式事務(wù)的實(shí)現(xiàn)方案,并通過具體的示例代碼演示它們的用法和應(yīng)用場景
    2023-06-06
  • Java8中Stream的一些神操作

    Java8中Stream的一些神操作

    Stream是Java8中處理集合的關(guān)鍵抽象概念,它可以指定你希望對集合進(jìn)行的操作,可以執(zhí)行非常復(fù)雜的查找、過濾和映射數(shù)據(jù)等操作,這篇文章主要給大家介紹了Java8中Stream的一些神操作,需要的朋友可以參考下
    2021-11-11
  • Java網(wǎng)絡(luò)編程實(shí)例——簡單模擬在線聊天

    Java網(wǎng)絡(luò)編程實(shí)例——簡單模擬在線聊天

    學(xué)了java網(wǎng)絡(luò),也是該做個小案例來鞏固一下了。本次案例將使用UDP和多線程模擬即時聊天,簡單練練手。
    2021-05-05
  • Java線程池隊(duì)列PriorityBlockingQueue和SynchronousQueue詳解

    Java線程池隊(duì)列PriorityBlockingQueue和SynchronousQueue詳解

    這篇文章主要為大家介紹了Java線程池隊(duì)列PriorityBlockingQueue和SynchronousQueue詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • IDEA修改java文件后 不用重啟Tomcat服務(wù)便可實(shí)現(xiàn)自動更新

    IDEA修改java文件后 不用重啟Tomcat服務(wù)便可實(shí)現(xiàn)自動更新

    這篇文章主要介紹了IDEA修改java文件后 不用重啟Tomcat服務(wù)便可實(shí)現(xiàn)自動更新,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • java實(shí)現(xiàn)求只出現(xiàn)一次的數(shù)字

    java實(shí)現(xiàn)求只出現(xiàn)一次的數(shù)字

    本文主要介紹了java實(shí)現(xiàn)求只出現(xiàn)一次的數(shù)字,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • java數(shù)據(jù)結(jié)構(gòu)與算法之希爾排序詳解

    java數(shù)據(jù)結(jié)構(gòu)與算法之希爾排序詳解

    這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)與算法之希爾排序,結(jié)合實(shí)例形式分析了希爾排序的概念、原理、實(shí)現(xiàn)方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-05-05

最新評論

洪泽县| 内乡县| 台州市| 灵山县| 武清区| 靖西县| 进贤县| 澳门| 定兴县| 扶沟县| 武夷山市| 阿合奇县| 霞浦县| 封开县| 江油市| 新源县| 正定县| 金秀| 阿鲁科尔沁旗| 延庆县| 西吉县| 徐闻县| 木兰县| 灵山县| 娄底市| 乐东| 天津市| 南和县| 唐山市| 宕昌县| 扎赉特旗| 安宁市| 新邵县| 巨野县| 板桥市| 三穗县| 通化县| 象州县| 蓬莱市| 桐庐县| 衡南县|