Spring 添加到特定 RestController 的过滤器

Spring Filter added to specific RestController

我有一个 @RestController,我想给它添加一个 Spring 过滤器,以便在处理扩展 OncePerRequestFilter

的请求之前添加一个检查

我也不想将它添加到所有控制器,我最后的办法是将它添加到 特定路径 [=27] 上的通用 WebApplicationInitializeronStartup =]:

public void onStartup(ServletContext container) throws ServletException {
    FilterRegistration corsFilterReg = servletContext.addFilter("CorsFilter", CorsFilter.class);
   corsFilterReg.addMappingForUrlPatterns(null, false, "/servlet/cors/*");

是否有其他方法将 Spring 过滤器连接到特定的 Spring RestController?

在 Spring REST 中使用过滤器拦截器是错误的吗?

过滤器应该只连接到 URL 吗?

您可以使用 @WebFilter annotation.

示例:

@WebFilter(filterName = "Filter", urlPatterns = { "/filter/*" })
public class WebFilter implements Filter {
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
         .......
    }

   .......
  }