亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

注冊為Spring bean時,過濾調用兩次

注冊為Spring bean時,過濾調用兩次

隔江千里 2019-09-06 16:17:59
我想@Autowire用一個Filter。所以我在SecurityConfig下面定義我的過濾器:    @Override    protected void configure(HttpSecurity http) throws Exception {        http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);        http.addFilterBefore(getA(), BasicAuthenticationFilter.class);        http.csrf().disable();    }    @Bean    public A getA(){        return new A();    }這個過濾器A擴展了Spring的GenericFilterBean。當我調用控制器時,我得到低于輸出,這顯示過濾器命中兩次。filter A beforefilter A beforemycontroller invokefilter A afterfilter A after我的觀察是,這個額外的調用使用Spring容器調用,因為如果filter沒有注冊為bean,它只會被命中一次。是什么原因,我該如何解決?
查看完整描述

3 回答

?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

正如您所觀察到的,Spring Boot將自動注冊Filter與servlet容器相關的任何bean 。一種選擇是不將過濾器公開為bean,只將其注冊到Spring Security。


如果您希望能夠將依賴關系自動裝入Filter,那么它需要是一個bean。這意味著您需要告訴Spring Boot不要將其注冊為過濾器。如文檔中所述,您可以使用以下命令執行此操作FilterRegistrationBean:


@Bean

public FilterRegistrationBean registration(MyFilter filter) {

    FilterRegistrationBean registration = new FilterRegistrationBean(filter);

    registration.setEnabled(false);

    return registration;

}


查看完整回答
反對 回復 2019-09-06
?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

有沒有辦法阻止Spring創建重復過濾器同時還指定過濾器順序?我們想為一個也是bean的過濾器指定setOrder。無論我們如何處理FilterRegistrationBean,自動注冊的過濾器都位于過濾器鏈的末尾附近。

查看完整回答
反對 回復 2019-09-06
?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

這不是雙重注冊。通過顯式提供FilterRegistrationBean禁用的過濾器,您將阻止Spring Boot創建一個已啟用的過濾器。

查看完整回答
反對 回復 2019-09-06
  • 3 回答
  • 0 關注
  • 1342 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號