spring boot 配置Filter过滤器方法总结

字体大小: 中小 标准 ->行高大小: 标准

相关概念参考:AOP(面向切面编程)、Filter(过虑器)、Interceptor(拦截器)

工作原理及代码参考:Java三大器之过滤器(Filter)的工作原理和代码演示

spring boot 配置Filter过滤器
1、通过 @WebFilter 注解来配置
@Component
@WebFilter(urlPatterns = "/webapi/*", filterName = "authFilter")
public class AuthFilter implements Filter {
    ......
}
2、通过 @Bean 注解来配置
我这个是写在带 @SpringBootApplication 注解的类里面的。

 @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 registration = new FilterRegistrationBean(new TestFilter());
  registration.addUrlPatterns("/webapi/*"); //
  registration.addInitParameter("paramName", "paramValue"); //
  registration.setName("testFilter");
  registration.setOrder(1);
  return registration;
 }
 
 @Bean
 public FilterRegistrationBean authFilterRegistration() {
  FilterRegistrationBean registration = new FilterRegistrationBean(new AuthFilter());
  registration.addUrlPatterns("/webapi/*"); //
  registration.addInitParameter("paramName", "paramValue"); //
  registration.setName("authFilter");
  registration.setOrder(2);
  return registration;
 }
注意:

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

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


此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/70836.html