拦截器的注解
springboot项目使用过滤器有两种方案:
方案一:@WebFilter + @ServletComponentScan
- 启动类上面加@ServletComponentScan,开启扫描sevlet组件的扫描。Filter类上加@WebFilter注解生成过滤器。
- 缺点是filter中不能引用Spring容器中的bean.
方案二: @Component + @Configuration
- Filter类上加@Component注解,filter类被载入Spring容器。
- 缺点:无法配置拦截路径等详细信息。
- @Configuration 在配置类中配置一个FilterRegistrationBean,将@Componen修饰的fitler注册到FilterRegistrationBean中,
FilterRegistrationBean可以设置filter名称/拦截路径等。
@Configuration
public class WebAuthFilterConfig {
@Bean
public FilterRegistrationBean webAuthFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(webAuthFilter());
registration.setName("WebAuthFilter");
registration.addUrlPatterns("/web/*");
registration.addInitParameter("excludeUrls", "/web/login");
registration.setOrder(0);
return registration;
}
/**WebAuthFilter可以使用@Bean注解创建实例,也可以使用@Component注解,然后在此类中引入*/
@Bean
public Filter webAuthFilter() {
return new WebAuthFilter();
}
}