基于 FilterRegistrationBean
//public class IntegralFilter implements Filter { ... }
@Bean
public class FilterConfig {
@Autowired
private UrlIntegralsConfigurationService urlIntegralsConfigurationService;
// Filter代码类
@Bean
public IntegralFilter integralFilter() {
IntegralFilter integralFilter = new IntegralFilter();
integralFilter.init(urlIntegralsConfigurationService );
return integralFilter;
}
@Bean
public FilterRegistrationBean getFilterRegistrationBean(IntegralFilter integralFilter ) {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(integralFilter);
filterRegistrationBean.setOrder(Ordered.LOWEST_PRECEDENCE);
filterRegistrationBean.addUrlPatterns("/api/*");
filterRegistrationBean.setName("IntegralFilter");
return filterRegistrationBean;
}
}基于 @WebFilter
在Spring Boot 里配置 Servlet 原生过滤器;
注意是 Servlet (容器)原生过滤器组件, 不是Spring 过滤链里的, @WebFilter这个注解是Servlet3.0的规范
在bean注解
@Configuration
@WebFilter(urlPatterns = "*.m3u8", filterName = "liveActiveFilter")
public class LiveActiveFilter implements Filter {
....
}踩坑
还需要在启动方法上加上@ServletComponentScan注解!!!
Enables scanning for Servlet components ({@link WebFilter filters}, {@link WebServlet servlets}, and {@link WebListener listeners}). Scanning is only performed when using an embedded web server.