From 64d8c576abe555778495367f1a0bf6fd3456a108 Mon Sep 17 00:00:00 2001 From: asahi Date: Tue, 11 Mar 2025 13:00:50 +0800 Subject: [PATCH] =?UTF-8?q?doc:=20=E9=98=85=E8=AF=BBwebflux=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spring/webflux/spring webflux.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/spring/webflux/spring webflux.md b/spring/webflux/spring webflux.md index 2a099ee..89354a2 100644 --- a/spring/webflux/spring webflux.md +++ b/spring/webflux/spring webflux.md @@ -305,3 +305,18 @@ UrlHandlerFilter urlHandlerFilter = UrlHandlerFilter ##### Appenders `slf4j`和`log4j`等日志库都提供异步logger,用于避免阻塞。使用异步logger会存在部分缺点,例如`丢弃无法排队的异步消息`。但是,其仍然是目前非阻塞框架的最佳选择。 +## DispatcherHandler +和spring MVC类似,spring webflux同样按照`font controller pattern`进行设计,包含一个`central WebHandler`,即`DispatcherHandler`。 + +Dispathcer提供了一个共享的请求处理算法,将实际的处理逻辑委托给其他可配置的组件。 + +`DispatcherHandler`通过spring配置来发现委托的组件。`DispatcherHandler`其本身也是一个spring bean,并且实现了`ApplicationContextAware`接口,可以访问spring上下文。 + +如果`Dispatcher`的bean name为`webHandler`,那么其会被`WebHttpHandlerBuilder`发现,并且将其放入`request-processing chain`中。 + +webflux应用中包含的spring configuration通常包括: +- bean name为`webHandler`的`DispatcherHandler` +- `WebFilter`和`WebExceptionHandler` beans +- 被委托给`webHandler`的beans +- 其他 +