在 Spring Boot 中实现过滤器有两种方法:
- 通过编写过滤器类并使用注解 @WebFilter 将其注册为过滤器。例如:
@WebFilter(urlPatterns = "/*")
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// 处理过滤逻辑
chain.doFilter(request, response);
}
}
- 通过编写过滤器类并通过编写配置类来注册过滤器。例如:
@Configuration
public class WebConfiguration {
@Bean
public FilterRegistrationBean<MyFilter> filterRegistrationBean() {
FilterRegistrationBean<MyFilter> registrationBean = new FilterRegistrationBean<>();
registrationBean.setFilter(new MyFilter());
registrationBean.addUrlPatterns("/*");
return registrationBean;
}
}
注意:在 Spring Boot 2.3 及更高版本中,使用注解 @WebFilter 注册过滤器时,需要添加以下依赖:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
在 Spring Boot 2.2 及更低版本中,不需要添加此依赖。