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 +- 其他 +