問題:
嘗試將@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中文網其他相關文章!