Spring Boot中多个Filter的执行顺序是怎样的?

spring boot中多个filter的执行顺序是怎样的?

多个类实现 Filter 接口后的执行顺序

在标准 Filter 实现中,当存在多个 Filter 时,它们的 doFilter 方法将按其定义的顺序依次执行。这背后的原因在于:

FilterRegistrationBean: Spring Boot 创建每个 Filter 的实例并将其注册到一个称为 FilterRegistrationBean 的 Bean 中。ServletContextInitializer: Spring Boot 还会注册一个 ServletContextInitializer bean,该 bean会在应用程序启动期间将这些 FilterRegistrationBean 添加到 Servlet 容器中。FilterChain: Servlet 容器负责管理 Filter 链,并根据注册的顺序调用各个 Filter 的 doFilter 方法。

因此,当 Spring Boot 扫描到实现了 Filter 接口的多个类时,它将为每个类创建一个 FilterRegistrationBean,并按照它们在容器中注册的顺序将它们添加到 Filter 链中。当请求到达应用程序时,Servlet 容器会依次调用这些 Filter 的 doFilter 方法。

在您提供的示例中,XssFilter 和 TestFilter 都实现了 Filter 接口,这意味着它们将被添加到 Filter 链中。当访问接口时,这两个类的 doFilter 方法将首先按顺序打印其类名,然后调用 chain.doFilter 方法将请求转发到下一个过滤器或目标。

由于 Filter 链是由 Servlet 容器管理的,因此它确保多个 Filter 的 doFilter 方法按预期的顺序执行,而无需任何特定代码或 Spring Boot 特定配置。

以上就是Spring Boot中多个Filter的执行顺序是怎样的?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2608347.html

(0)
上一篇 2025年3月6日 20:38:04
下一篇 2025年2月27日 04:52:42

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论