前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Webflux - 03 Webflux编程模型

Spring Webflux - 03 Webflux编程模型

作者头像
小小工匠
发布2022-10-08 08:54:24
9730
发布2022-10-08 08:54:24
举报
文章被收录于专栏:小工匠聊架构

文章目录

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
@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中的响应

代码语言:javascript
复制
@FunctionalInterface
public interface HandlerFunction<T extends ServerResponse>{
	Mono<T> handle(ServerRequest request)
}

RouterFunction

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

代码语言:javascript
复制
@FunctionalInterface
public interface RouterFunction<T extends ServerResponse>{
	MonoHandlerFunction<T>  route(ServerRequest request);
}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/10/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • webflux
  • Annotated Controllers - 基于Spring MVC 注解定义请求的Webflux开发
  • Functional Endpoints_基于函数式的Webflux开发
    • HandlerFunction
      • RouterFunction
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档