一般自定义的拦截器继承OncePerRequestFilter,它能够确保在一次请求只通过一次filter,而不需要重复执行。(为了兼容各种不同的运行环境和版本,有些web container可能会不止一次访问)
使用:
@Configuration
public class YourFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
// 你的一些操作
filterChain.doFilter(request, response);
}
}
如果你是通过将此通过依赖引入的方式使用,则:
1.设置spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.yours.你的自定义过滤器配置类\
2.设置你的自定义过滤器配置类
@Configuration
public class 你的自定义过滤器配置类 {
@Bean
public FilterRegistrationBean registerFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new YourFilter());
registration.addUrlPatterns("/*");
registration.setName("YourFilterName");
registration.setOrder(1);
return registration;
}
}