调度处理器

Same in Spring MVC

Spring WebFlux,像Spring MVC一样,是围绕中央WebHandler的前端控制器模式设计的。DispatcherHandler提供了一个用于请求处理的共享算法,而实际是可配置的、委托组件执行的。模式十分灵活,并且支持不同的工作流。

DispatcherHandler从Spring配置中发现它需要的委托组件。它也被设计成一个Spring bean本身,并实现ApplicationContextAware以访问它运行的上下文。它将一个请求处理链放在webHandler API中描述。如果DispatcherHandler用bean名称“webHandler”声明,则由WebHttpHandlerBuilder发现。

Spring配置在WebFlux应用程序通常包含:

  • DispatcherHander bean —— webHandler

  • WebFilter 和 WebExceptionHandler

  • DispatcherHandler special beans

  • 其他

    配置 WebHttpHandlerBuilder 配置处理链

ApplicationContext context = ...
HttpHandler handler = WebHttpHandlerBuilder.applicationContext(context);

由此产生的HttpHandler已经准备好与服务器适配器一起使用。

特殊bean类型

Same in Spring MVC

DispatcherHandler委派到特殊bean处理请求并呈现出适当的响应。根据特殊bean对象,指的是在下表中列出的框架契约之一的Spring管理对象实例

bean类型 描述
HandlerMapping(处理器映射器) 将请求映射到一个处理程序,映射是基于某些标准的细节通过HandlerMapping实现——注解处理器简单的URL模式映射。主要的HandlerMapping实现类是RequestMappingHandlerMapping的基于@RequestMapping的注解方法。RouterFunctionMapping基于功能性端点路由。还有SimpleUrlHandlerMapping明确注册的URL路径处理模式
HandlerAdapter (处理器适配器) 帮助DispatcherHandler调用处理程序映射到一个请求,而不管处理程序如何被调用。例如,调用带注解的控制器需要解析注解。HandlerAdapter的主要目的是保护DispatcherHandler具体实现细节
HandlerResultHandler 处理程序调用并最终完成响应的结果。HandlerResultHandler的具体实现ResponseEntityResultHandler支持ResponseEntity返回值,ResponseBodyResultHandler支持@ResponseBody注解,ServerResponseResultHandler支持ServerResponse返回功能性端点。ViewResolutionResultHandler返回View和Model

框架配置

Same in Spring MVC

DispatcherHandler检测它在ApplicationContext中需要的特殊bean,应用程序可以声明在DispatcherHandler希望拥有的特殊bean。大多数应用程序将会找到一个更好的出发点在WebFlux Java配置中提供更高级别的配置API,依次进行必要的bean声明。请看具体的WebFlux Java Config配置

处理

Same in Spring MVC

DispatcherHandler流程要求如下:

  • 每个HandlerMapping被要求找到一个匹配的处理程序,并使用第一个匹配。

  • 如果发现了一个处理程序,它将通过一个适当的HandlerAdapter执行,它将执行的返回值作为HandlerResult公开

  • HandlerResult由一个合适的HandlerResultHandler提供,并且直接编写成响应,或使用一个视图呈现内容

results matching ""

    No results matching ""