有没有一种方法可以使Spring启动过滤器异步运行?

时间:2020-02-24 07:51:29

标签: java spring-boot asynchronous servlet-filters completable-future

我知道在Springboot中 Controller 中的方法可以通过对它们的@Async注释和CompletableFuture<T>作为其返回类型的帮助而异步进行,但是可以类似在Spring 过滤器中实现?

在过滤器中,我们需要实现doFilter方法,该方法返回一个void。有什么办法可以使其异步?

非常感谢链接到任何资源。

1 个答案:

答案 0 :(得分:0)

不可能。 Spring Security的过滤器是责任链模式的实现。

https://spring.io/guides/topicals/spring-security-architecture / 网络安全

一个servlet最多只能处理一个请求,但过滤器会形成一个 链,因此它们是有序的,实际上,过滤器可以否决其他 链,如果它想处理请求本身。过滤器也可以 修改下游过滤器中使用的请求和/或响应 和servlet。

由于每个过滤器都可以修改/拒绝请求,而且它们是有序的,因此必须顺序进行过滤器链的处理。

另一方面,如果您确实要进行异步处理,则可以通过派生/加入过滤器中的线程来完成。