问题:
尝试将 @Autowire 与过滤器结果结合使用在过滤器的意外双重调用中。仔细检查后发现,当过滤器注册为 bean 时,Spring 容器会触发此额外调用。
要解决此问题,请考虑实施以下方法之一:
禁用自动过滤器注册:
避免将过滤器暴露为 bean,而是手动将其注册到 Spring Security。这可以防止 Spring Boot 自动注册过滤器两次。
使用 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中文网其他相关文章!