1、通过 @WebFilter 注解来配置

@Component
@WebFilter(urlPatterns = "/webapi/*", filterName = "authFilter")
public class AuthFilter implements Filter {
    ......
}

2、通过 @Bean 注解来配置

	@Bean
	public FilterRegistrationBean testFilterRegistration() {
		FilterRegistrationBean registration = new FilterRegistrationBean(new TestFilter());
		registration.addUrlPatterns("/webapi/*"); //
		registration.addInitParameter("paramName", "paramValue"); //
		registration.setName("testFilter");
		return registration;
	}

那如果有多个过虑器,怎么指定执行的顺序呢?

通过 registration.setOrder(1); 来设置,例如:

    @Bean
    public FilterRegistrationBean testFilterRegistration() {
        FilterRegistrationBean<TestFilter> registration = new FilterRegistrationBean<>();
        registration.setFilter(new TestFilter());
        registration.addUrlPatterns("/webapi/*"); //
        registration.addInitParameter("paramName", "paramValue"); //
        registration.setName("testFilter");
        registration.setOrder(1);
        return registration;
    }


    @Bean
    public FilterRegistrationBean authFilterRegistration() {
        FilterRegistrationBean<AuthFilter> registration = new FilterRegistrationBean<>();
        registration.setFilter(new AuthFilter());
        registration.addUrlPatterns("/webapi/*"); //
        registration.addInitParameter("paramName", "paramValue"); //
        registration.setName("authFilter");
        registration.setOrder(2);
        return registration;
    }

注意:

1、如果指定了 Order 属性,执行的顺序与注册的顺序是无关的;

2、数字越小,优先级越高;

关于 @Order 注解

有文章提到使用 @Order 注解来指定顺序,亲测无效。


hhhhh