Spring注释的Spring Boot / MVC过滤器

时间:2015-03-01 05:46:10

标签: spring-mvc spring-boot

我正在转换Web应用程序以使用spring-boot。 该应用程序目前使用resteasy我想转换为使用spring-rest / mvc。

到目前为止,它一直非常直接(主要是替换注释)。 我遇到问题的地方与过滤器(HTTP过滤器)有关。

目前,该应用程序有一个在一些端点中使用的过滤器。 注释用于指定应用过滤器的休息点。注释基于@NameBinding

这可以用Spring完成(即创建一个注释,对于我希望应用过滤器的每个rest端点方法,我会注释它)?

2 个答案:

答案 0 :(得分:1)

您可以定义一个Filter类,该类扩展了OncePerRequestFilter并覆盖了shouldNotFilter()方法。您可以@Autowire RequestMappingHandlerMapping来获得与传入请求相关联的处理程序。

然后,您可以简单地检查该处理程序方法是否包含注释。

@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
}

答案 1 :(得分:0)

如果您正在使用spring-boot,则可以使用FilterRegistrationBean并将其映射到特定的URL

How to add a filter class in Spring Boot?

http://www.leveluplunch.com/blog/2014/04/01/spring-boot-configure-servlet-mapping-filters/