文章目录

  • webflux
  • Annotated Controllers - 基于Spring MVC 注解定义请求的Webflux开发
  • Functional Endpoints_基于函数式的Webflux开发
    • HandlerFunction
    • RouterFunction


webflux

https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html#webflux

WebFlux有两种编程模型

  • 传统的 Annotated Controllers
  • 轻量的 Functional Endpoints

Annotated Controllers 注释控制器 使用方式传统的MVC方式,允许返回Flux,Mono类型
Functional Endpoints 启动非常快,占用内存少。适用小型项目,不然路由表非常复杂

Spring MVC 和 Spring WebFlux 均能使用注解驱动 Controller,然而不同点在于并发模型和阻塞特性。

Spring MVC 通常是基于Servlet 和Tomcat,因此是阻塞的,而Spring WebFlux 通常是非阻塞服务,基于 Reactor 和 Netty,不会发生阻塞。


Annotated Controllers - 基于Spring MVC 注解定义请求的Webflux开发

https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html#webflux-controller

@RestController
public class TestController {@GetMapping("index")public Mono<String>  index(){return Mono,just("ARTISAN CODE");}
}

Functional Endpoints_基于函数式的Webflux开发

在基于函数式的编程模型中,有两个核心的接口,分别是 RouterFunction 和 HandlerFunction,

  • RouterFunction 实现了路由功能,将请求转发给对应的 handler
  • HandlerFunction 代表了处理传入请求并生成响应的函数

HandlerFunction

相当于Controller的具体处理方法,输入为请求,输出封装在Mono中的响应

@FunctionalInterface
public interface HandlerFunction<T extends ServerResponse>{Mono<T> handle(ServerRequest request)
}

RouterFunction

相当于RequestMapping, 将Url射到具体的HandlerFunction,输入为请求,输出为封装在 Mono的HandlerFunction

@FunctionalInterface
public interface RouterFunction<T extends ServerResponse>{MonoHandlerFunction<T>  route(ServerRequest request);
}

Spring Webflux - 03 Webflux编程模型相关推荐

  1. 三种方式实现观察者模式 及 Spring中的事件编程模型

    观察者模式可以说是众多设计模式中,最容易理解的设计模式之一了,观察者模式在Spring中也随处可见,面试的时候,面试官可能会问,嘿,你既然读过Spring源码,那你说说Spring中运用的设计模式吧, ...

  2. Spring编程模型:Spring实现了哪些编程模型?

  3. 从源码底层聊聊Spring Cloud是如何一统服务注册、发现编程模型

    文章目录 背景 源码版本 核心抽象接口 DiscoveryClient EnableDiscoveryClient ReactiveDiscoveryClient ServiceInstance Re ...

  4. Spring WebFlux 响应式编程学习笔记(一)

    各位Javaer们,大家都在用SpringMVC吧?当我们不亦乐乎的用着SpringMVC框架的时候,Spring5.x又悄(da)无(zhang)声(qi)息(gu)的推出了Spring WebFl ...

  5. Spring WebFlux – SpringReact式编程

    Spring WebFlux is the new module introduced in Spring 5. Spring WebFlux is the first step towards re ...

  6. Spring:Webflux响应式编程

    目录 简介 响应式编程 Reactor 信号 操作符 SpringWebflux 执行流程和API 注解实现SpringWebflux 说明:基于atguigu学习笔记. 简介 Webflux是 Sp ...

  7. 新一代Spring Web框架WebFlux!

    Spring WebFlux 教程:如何构建反应式 Web 应用程序 反应式系统提供了我们在高数据流世界中所需的无与伦比的响应能力和可扩展性.然而,反应式系统需要经过专门培训的工具和开发人员来实现这些 ...

  8. Spring Boot 集成 WebFlux 开发 Reactive Web 应用

    Spring Boot 集成 WebFlux 开发 Reactive Web 应用 <Spring Boot 实战开发>-- 基于 Gradle + Kotlin的企业级应用开发最佳实践 ...

  9. Zuul和Gateway请求IO模型比对(WebFlux优势)以及Reactor模型分析

    文章目录 背景 Zuul 请求处理模型 Gateway Doug Lea Reactor模型 总结 背景 最近在做一些开源网关的调研,首选也是主流的网关就是Zuul和Gateway.然后在性能上基于Z ...

最新文章

  1. 在ListView中使用BaseAdapter进行适配
  2. linux - word frequency
  3. 【static关键字的作用是什么?它用在什么场景?static关键字深度解析来袭】
  4. 英语写作-Introduction
  5. qgraphicsview 添加矩形框并拖动改变大小_如何用手机巧影软件为视频添加字幕
  6. org.apache.hadoop.hbase.PleaseHoldException: Master is initializing(解決方案汇总+自己摸索)
  7. js+svg实现的一个环图
  8. Chrome浏览器离线安装包下载方法
  9. 用vs2008编写和调试linux程序 ----VisualGDB 使用教程
  10. Axure RP 9操作界面介绍【教程一】
  11. 论文翻译:2021_语音增强模型压缩_Performance optimizations on deep noise suppression models...
  12. Python暴力破解受密码保护的zip/rar文件
  13. 怎么下载Windows图片和传真查看器
  14. 电脑仙人掌机器人作文_用蜗牛.仙人掌.电脑.雪人.机器人.蚕宝宝.大象任意选两个编写一则300童话...
  15. 用 JAVA 实现画板
  16. 中餐和西餐菜名大全(zt)
  17. Exchange Server 2010邮件撤回条件说明
  18. 单纯形法(simplex algorithm)
  19. 如何用C语言实现小游戏——扫雷
  20. VisualStudio20008快捷键大全

热门文章

  1. 关于以太坊智能合约在项目实战过程中的设计及经验总结(1)
  2. 微信小程序AppID、原始ID的获取方法
  3. 工作流: Gitlab和Telegram集成
  4. 汉文SEO大神:教你使用nofollow并分析百度nofollow的作用
  5. 用openpyxl实现excel的统计汇总
  6. centos下tomcat通过keytool配置ssl服务器端证书及客户端证书
  7. 我想转行做软件测试,有必要报培训班吗?我听说好多人说自学就行...
  8. 手机错位摄影,一学就会!零基础学…
  9. Halcon版权费、hdevelop和hdevelop xl的区别
  10. 写一个爬取东方财富网股票融资融券的pthon代码