Spring Webflux - 03 Webflux编程模型
Posted 小小工匠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Webflux - 03 Webflux编程模型相关的知识,希望对你有一定的参考价值。
文章目录
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开发
@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编程模型的主要内容,如果未能解决你的问题,请参考以下文章
Spring Webflux - 03 Webflux编程模型
Spring Webflux Netty http 和 https
spring5 webflux,如何返回自定义json数据?
浅谈skywalking的spring-webflux-plugin