springboot系列21,WebFlux(上)

本文介绍了Spring WebFlux,一种全新的Reactive Web技术,支持非阻塞和Reactive Streams。文章探讨了WebFlux的编程模型,包括注解驱动和函数式编程,并详细讲解了函数式编程接口如Consumer、Supplier、Function和Predicate。接着,文章介绍了核心接口RouterFunction的使用,并通过对比传统WebMVC,展示了函数式编程在处理请求逻辑上的灵活性。最后,概述了WebFlux的核心组件,如HttpHandler和WebHandler API。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring WebFlux是一套全新的Reactive Web技术栈,实现完全非阻塞、支持Reactive Streams、背压等特性,而且运行的环境除了Servlet容器(Tomcat、Jetty、Undertow),还有Netty等。WebFlux可以和WebMVC共存,在springboot中,mvc的优先级更高。

编程模型

编程模型有两种,注解驱动函数式编程

WebFluxWebMVC注解驱动方面的异同

定义:都是@Controller或@RestController

映射:都是@RequestMapping、@GetMapping、@PostMapping等等

请求:都是@RequestParam、@RequestHeader、@CookieValue、@RequestBo、@PathVariable、RequestEntity

响应:都是@ResponseBody、ResponseEntity、ResponseCookie

拦截:都是@ControllerAdvice、@RestControllerAdvice

跨域:跨域方面有差异

特性 Spring Web MVC Spring WebFlux
资源跨域声明注解 @CrossOrigin 相同
资源跨域拦截器 CorsFilter CorsWebFilter
注册资源跨域信息 webMvcConfigurer#addCorsMappings WebFluxConfigurer#addCorsMappings

关于函数式编程

函数式编程是java1.8引入的新特性,在之前其实我们就已经用过了。函数式编程的接口必须有@FunctionalInterface注解,进去看这个注解的源码

看注释可以知道:这是用于函数式接口类型生命的信息性注解类型,这种接口只能有一个抽象方法,因为接口都有个默认方法Method#isDefault,所以这个方法也需要被覆盖。并且@FunctionalInterface不能标注在注解、类或枚举上。否则就不能被视为函数是接口,引起编译错误。函数是借口可以使用lambda表达式、方法引用或构造器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值