首页 > 解决方案 > 在现有 Spring 过滤器中自定义 URL 模式

问题描述

我在 Spring-boot 应用程序中使用第三方库,其中包括所有 API URL 的以下过滤器。

@Bean
public FilterRegistrationBean registerCarFilter(@Value("${car.filter.order:400}") int order) {
    final FilterRegistrationBean registrationBean = new FilterRegistrationBean();
    registrationBean.setFilter(new CarFilter());
    registrationBean.addUrlPatterns("/*");
    registrationBean.setOrder(order);
    return registrationBean;
}

是否可以针对特定 URL 排除此过滤器?以及这样做的最佳做法是什么。

如果我不想为“/car-status” URL 执行它怎么办?

请让我知道您对此的看法。

标签: springspring-mvcspring-bootspring-filter

解决方案


我没有测试它,但也许你的汽车过滤器应该扩展 OncePerRequestFilter。这是一个示例

https://github.com/spring-projects/spring-boot/issues/7426

在您的情况下 shouldNotFilter 可能如下所示:

@Override
protected boolean shouldNotFilter(HttpServletRequest request) throws ServletException {
    return "/car-status".equals(request.getServletPath());
}

或 request.getRequestURI() 取决于您的配置。


推荐阅读