spring-webflux

WebFlux的设计

原文链接:Spring-WebFlux的设计及工作原理剖析
WebFlux 底层实现依赖reactor和netty等。Spring做的就是通过抽象和封装,把reactor的能力通过你最熟悉不过的Controller来使用。
WebFlux 所有功能其实内部只由几个抽象类构建而成:

  • org.springframework.boot.web.reactive.server.ReactiveWebServerFactory
  • org.springframework.boot.web.server.WebServer
  • org.springframework.http.server.reactive.HttpHandler
  • org.springframework.web.reactive.HandlerMapping
  • org.springframework.web.server.WebHandler

WebServer
见名之意,就是 Reacive 服务器的抽象类,它定义了服务器的基本方法行为,包含启动,停止等。
Spring默认有五个WebServer的实现,默认的不特别指定情况下是 NettyWebServer。
ReactiveWebServerFactory
对应 WebServer,每个实现都会有一个工厂类对应,主要准备创建WebServer实例的资源,如 HttpHandler,HttpHandlerAdapter 等。
HttpHandler
为了适配不同的WebServer请求响应体,Spring设计了HttpHandler用来转化 底层的Http请求响应语义。
WebHandler
当 HttpHandler 接收到请求后,是怎么处理然后在调用 WebHandler 的,最终处理HttpHandler实现是 HttpWebHandlerAdapter,通过其内部的createExchange方法将请求和响应体封装在 ServerWebExchange 中了。
HandlerMapping
默认情况下,Spring会在上下文中初始化一个 DispatcherHandler 的实现,BeanName就是“webHandler”。这个里面维护了一个HandlerMapping列表,当请求过来时会迭代HandlerMapping列表,返回一个WebHandler处理。
启动流程分析
ReactiveWebServerApplicationContext,AnnotationConfigReactiveWebServerApplicationContext
Reactive 启动流程图

WebFlux教程

原文链接:Spring-WebFlux教程