其实WebFlux也和WebMvc一样,有一套请求的处理流程,而且两套流程也很相似。都是先获取handler方法,再获取handler适配器,然后通过handler适配器调用handler方法,最后处理结果。本文就来分析一下该过程具体的实现。

Spring Boot在创建Reactive类型的Web服务器时,会从bean工厂中查找HttpHandler类型的bean。在NettyReactiveWebServerFactory的实现中,会利用该bean创建ReactorHttpHandlerAdapter。这个适配器是Spring Framework中提供的类,底层的ReactoryNetty收到请求后,会调用该适配器,而该适配器又会调用设置的HttpHandler来处理请求。

从Servlet容器到我们编写的handler方法,Spring帮我们做了很多事情。比如根据请求URL查找到目标handler方法,参数的类型转换及绑定,调用handler方法,以及返回值写回响应等等操作。本文就来分析一下这个过程中Spring到底帮我们做了哪些事情,以及是怎么做的。

在分析请求的处理流程之前,还是很有必要清楚DispatcherServlet的初始化过程是怎么回事,毕竟这个过程会初始化很多处理请求的组件,不然不知道这些组件是在什么之后以及怎么样被创建的。所以本文以Servlet规范的init方法作为入口,分析一下整个DispatcherServlet的初始化过程。

SpringBoot中的Web容器一文中介绍过Spring Boot在启动过程中会创建Web服务器并启动它。在[ReactorNetty中的HttpServer的创建过程]这篇文章中也介绍了创建的过程,本文就来分析一下其启动过程是怎样的。

在启动过程中分析到,当客户端的请求到来时,会为其设置一个特殊的ReactiveBridge处理器来处理请求,从名称就可以看出来,该处理器是Netty和反应式的桥接器。本文就来分析一下,当新请求到来时,该处理器是怎么处理的。

不管是服务端还是客户端的通道,都会注册到事件循环所关联的通道选择器中。注册到选择器之后,当通道有事件发生时,事件循环会通过选择器获取到这些事件,并相应调用方法来处理。本文来分析一下通道的注册过程。

Nacos的服务端整合了Spring Boot框架,其利用了Spring中的一些扩展点来实现启动过程中需要完成的操作。本文会分析Nacos是怎么创建和启动gRPC服务的,以及是怎么扫描、注册和映射处理请求的handler的。

Nacos中服务端gRPC服务的启动过程一文中,介绍到gRPC启动之前会进行服务注册。当接收到服务时,会调用handler来处理。当接收到一元服务时,所要执行的handler是通过本文介绍的GrpcRequestAcceptor来处理的,本文来分析一下它是怎么工作的。

在Netty的客户端通信中,一般会使用NioSocketChannel作为通道类型;另外在服务端,NioServerSocketChannel也会使用该类型的通道表示客户端的连接请求。本文分析一下该类的实现原理。