首页 >Java >java教程 >为什么我的 Spring Filter 在注册为 Bean 时会被调用两次?

为什么我的 Spring Filter 在注册为 Bean 时会被调用两次?

DDD
DDD原创
2024-12-09 15:55:12715浏览

Why is my Spring Filter Invoked Twice When Registered as a Bean?

注册为 Spring Bean 时过滤器被调用两次

问题:

尝试将 @Autowire 与过滤器结果结合使用在过滤器的意外双重调用中。仔细检查后发现,当过滤器注册为 bean 时,Spring 容器会触发此额外调用。

解决方案:

要解决此问题,请考虑实施以下方法之一:

  1. 禁用自动过滤器注册:

    避免将过滤器暴露为 bean,而是手动将其注册到 Spring Security。这可以防止 Spring Boot 自动注册过滤器两次。

  2. 使用 FilterRegistrationBean:

    如果需要将依赖项注入到过滤器中,则必须注册为 bean。但是,为了防止自动注册,可以使用 FilterRegistrationBean,并将“enabled”属性设置为 false。示例实现:

@Bean
public FilterRegistrationBean registration(MyFilter filter) {
    FilterRegistrationBean<MyFilter> registration = new FilterRegistrationBean<>(filter);
    registration.setEnabled(false);
    return registration;
}

以上是为什么我的 Spring Filter 在注册为 Bean 时会被调用两次?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn