Java GlobalFilter vs WebFilter

Java GlobalFilter vs WebFilter,java,spring,spring-webflux,spring-cloud-gateway,Java,Spring,Spring Webflux,Spring Cloud Gateway,我在SpringCloudGateway迈出了第一步。 在研究期间,我想更好地了解GlobalFilter的使用。具体来说,我打算每次为每个路由应用一些过滤器 阅读文档()有两种方法可以实现我的目标。 第一种是使用全局过滤器,第二种是在默认过滤器中使用网关过滤器 这两种解决方案都非常有效,但仅适用于YAML配置中定义的路由。 如果我有任何RouteLocator或RouterFunction,我每次都需要声明过滤器 .filters(f -> f.globalFilter("somethi

我在SpringCloudGateway迈出了第一步。 在研究期间,我想更好地了解
GlobalFilter
的使用。具体来说,我打算每次为每个路由应用一些过滤器

阅读文档()有两种方法可以实现我的目标。 第一种是使用
全局过滤器
,第二种是在
默认过滤器
中使用
网关过滤器

这两种解决方案都非常有效,但仅适用于YAML配置中定义的路由。 如果我有任何RouteLocator或RouterFunction,我每次都需要声明过滤器

.filters(f -> f.globalFilter("something"))
我发现实现目标的唯一方法是直接使用
WebFilter
()

因此,我这里的问题是,是否有人能解释这两个过滤器
GatewayFilter
/
GlobalFilter
Webfilter

也许答案在Spring文档中,但我找不到它


提前谢谢你

如果您想为每个路由(对于YAML中定义的路由以及网关本身承载的控制器/端点)设置一个筛选器,
WebFilter
应该是一个不错的选择

如果您希望为所有路由设置筛选器,但不希望为网关中承载的端点设置筛选器,则可以选择默认筛选器/全局筛选器

最后,您可以为特定路由配置网关筛选器


我在源代码中注意到,路由通过
FilteringWebHandler
进行,网关中的端点直接映射到控制器方法,它们实际上并不通过这些处理程序(但通过普通的WebFilter)。因此,如上所述。

这是全局过滤器的文档。谢谢@ThomasAndolf,但我已经找到了该文档(我在问题描述中报告了该文档),但在阅读该文档时,还有
WebFilter
我找不到一个有用的说明,说明为什么我应该使用一个而不是另一个。@AndreaPosadino我需要同样的说明。我们在网关中定义了一个显式的rest控制器,其他的都是返回到下游服务的路由。我们对所有路由都有特定的网关过滤器。但是对于rest控制器,这些过滤器不会以某种方式应用。WebFilter是前进的唯一途径。但是WebFilter同时适用于rest控制器和所有其他路由方法。我们如何防止这种情况?有什么建议吗