1. 程式人生 > >springboot之多個filter的執行順序以及配置

springboot之多個filter的執行順序以及配置

當專案中有多個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;
	}


}