Spring mvc Spring Boot/MVC按注释筛选
我正在将web应用程序转换为使用spring boot。 该应用程序当前使用resteasy,我想将其转换为使用SpringREST/mvc 到目前为止,它是非常直接的(主要是替换注释)。 我遇到的一个问题与过滤器(HTTP过滤器)有关 目前,应用程序有一个过滤器,在一些端点中使用。 注释用于指定过滤器应用于哪些静止点。注释基于@NameBindingSpring mvc Spring Boot/MVC按注释筛选,spring-mvc,spring-boot,Spring Mvc,Spring Boot,我正在将web应用程序转换为使用spring boot。 该应用程序当前使用resteasy,我想将其转换为使用SpringREST/mvc 到目前为止,它是非常直接的(主要是替换注释)。 我遇到的一个问题与过滤器(HTTP过滤器)有关 目前,应用程序有一个过滤器,在一些端点中使用。 注释用于指定过滤器应用于哪些静止点。注释基于@NameBinding 这可以通过Spring实现吗(即创建一个注释,并为我希望应用过滤器的每个rest端点方法添加注释)?如果您使用Spring boot,您可以使用
这可以通过Spring实现吗(即创建一个注释,并为我希望应用过滤器的每个rest端点方法添加注释)?如果您使用Spring boot,您可以使用FilterRegistrationBean并将其映射到特定的URL
您可以定义一个过滤器类,该类扩展OncePerRequestFilter并重写
shouldNotFilter()
方法。您可以@AutowireRequestMappingHandlerMapping
获取与传入请求关联的处理程序
然后,您可以简单地检查处理程序方法是否包含注释
@Autowired
private RequestMappingHandlerMapping reqMap;
@Override
protected boolean shouldNotFilter(HttpServletRequest request) throws ServletException {
HandlerMethod method = (HandlerMethod) reqMap.getHandler(request).getHandler();
return !method.getMethod().isAnnotationPresent(SomeAnnotation.class);
}
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) {
// filtering logic
}
是的,但是在方法上使用注释似乎要干净得多。没有办法使用注释吗?正如本文所述..谢谢Paul,但是链接(@Filter)中提到的注释用于指定过滤器。我要寻找的是一个注释,我将在rest方法上添加注释,以指定我希望将给定的过滤器应用于被注释的特定rest端点。我想我可以创建一个智能FilterRegistrationBean,它可以检查注释并相应地分配过滤器,只是希望它已经存在。我做了一点研究……我没有找到任何可以立即做到这一点的东西。