咸鱼

咸鱼是以盐腌渍后,晒干的鱼

0%

spring-boot-starter-webflux简介

在Spring Boot2中引入了 Reactor Netty ,不过名字叫 Webflux

org.springframework.boot:spring-boot-starter-webflux -> io.projectreactor.netty:reactor-netty -> io.netty:netty-all

要了解 WebFlux ,首先了解下什么是 Reactive Streams(响应式流) :

要真打算用weblux,感觉需要整体学一下Reactive响应式编程,否则很多东西不懂

Reactive Streams 是 JVM 中面向流的库标准和规范:

  • 处理可能无限数量的元素
  • 按顺序处理
  • 组件之间异步传递
  • 强制性非阻塞背压(Backpressure)

Reactive Streams 的组成

  • 发布者:发布元素到订阅者
  • 订阅者:消费元素
  • 订阅:在发布者中,订阅被创建时,将与订阅者共享
  • 处理器:发布者与订阅者之间处理数据

Reactive Streams 响应式编程

Reactor 一般提供两种响应式 API :

  • Mono:实现发布者,并返回 0 或 1 个元素
  • Flux:实现发布者,并返回 N 个元素

一般是将 Publisher 作为输入,在框架内部转换成 Reactor 类型并处理逻辑,然后返回 Flux 或 Mono 作为输出。

Webflux

Spring Boot Webflux 就是基于 Reactor Netty 实现的。Spring Boot 2.0 包括一个新的 spring-webflux 模块。该模块包含对响应式 HTTP 和 WebSocket 客户端的支持,以及对 REST,HTML 和 WebSocket 交互等程序的支持。

一般来说,** Spring MVC 用于同步处理,Spring Webflux 用于异步处理 ** 。

webflux
webflux

Spring Boot Webflux 有两种编程模型实现,一种类似 Spring MVC 注解方式,另一种是使用其功能性端点方式。

微服务体系结构,WebFlux 和 MVC 可以混合使用。尤其开发 IO 密集型服务的时候,选择 WebFlux 去实现。

webflux

Reactor Netty是一个异步事件驱动的网络应用程序框架。它提供非阻塞和背压就绪的TCP,HTTP和UDP客户端和服务器。顾名思义,它基于Netty框架。
Spring Boot会 自动将 Reactor Netty 配置为默认服务器。除此之外,我们可以明确地将Reactor Netty添加到我们的项目中,Spring Boot应该再次自动配置它。

WebFlux 默认是通过 Netty 启动,并且自动设置了默认端口为 8080。另外还提供了对 Jetty、Undertow 等容器的支持。开发者自行在添加对应的容器 Starter 组件依赖,即可配置并使用对应内嵌容器实例。

** spring-boot-starter **

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>