springboot之多個filter的執行順序以及配置
阿新 • • 發佈:2018-12-31
當專案中有多個filter時,為了便於管理,可以建立一個配置檔案,對所有的filter進行管理。
有的方法可能同時需要多個filter依次對其進行過濾,這時候便需要對filter的執行進行優先順序的排序。如下:
新建一個配置檔案ComponentFilterOrderConfig.java
先生成一個過濾器的bean,再把過濾器的bean注入到FilterRegistrationBean中,並設定一些屬性,過濾的url,執行的順序之類的(order的數值越小,優先順序越高)即可。
在MyHiddenHttpMethodFilter.java和TokenAuthorFilter.java裡面不需要在添加註解@WebFilter(urlPatterns={})或@Configuration @Component等註解
@Configuration public class ComponentFilterOrderConfig { @Bean public Filter MyHiddenHttpMethodFilter(){ return new MyHiddenHttpMethodFilter();//自定義的過濾器 } @Bean public Filter tokenAuthorFilter(){ return new TokenAuthorFilter();//自定義的過濾器 } @Bean public FilterRegistrationBean filterRegistrationBean1(){ FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean(); filterRegistrationBean.setFilter(MyHiddenHttpMethodFilter()); filterRegistrationBean.addUrlPatterns("/app/approval/*"); filterRegistrationBean.setOrder(6);//order的數值越小 則優先順序越高 return filterRegistrationBean; } @Bean public FilterRegistrationBean filterRegistrationBean2(){ FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean(); filterRegistrationBean.setFilter(tokenAuthorFilter()); filterRegistrationBean.addUrlPatterns("/app/*"); filterRegistrationBean.setOrder(7); return filterRegistrationBean; } }