Spring boot filter

全局filter


@Component
@Order(1)
public class FirstFilter extends Filter {
    @Override
    public void doFilter(
            ServletRequest request,
            ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        ...
        chain.doFilter(request, response);
    }
}

全局过滤直接实现Filter即可,如需设定顺序,使用@Order注解

URL Pattern Filter

过滤指定的URL,需要通过注册Bean的形式:

@Configuration
public class FilterBeanConfiguration{
    @Bean
    public FilterRegistrationBean<SecondFilter> secondFilter(){
        FilterRegistrationBean<SecondFilter> registrationBean
                = new FilterRegistrationBean<>();

        registrationBean.setFilter(new SecondFilter());
        registrationBean.addUrlPatterns("/users/*");

        return registrationBean;
    }
}
@Order(2)
public class SecondFilter extends Filter {
    @Override
    public void doFilter(
            ServletRequest request,
            ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        ...
        chain.doFilter(request, response);
    }
}

注意通过FilterRegistrationBean注册的filter,不能被@Component修饰