springboot系列21,WebFlux(上)

Spring WebFlux是一套全新的Reactive Web技术栈,实现完全非阻塞、支持Reactive Streams、背压等特性,而且运行的环境除了Servlet容器(Tomcat、Jetty、Undertow),还有Netty等。WebFlux可以和WebMVC共存,在springboot中,mvc的优先级更高。编程模型编程模型有两种,注解驱动和函数式编程WebFlux与We...
摘要由CSDN通过智能技术生成

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表达式、方法引用或构造器

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值