我正在转换Web应用程序以使用spring-boot。 该应用程序目前使用resteasy我想转换为使用spring-rest / mvc。
到目前为止,它一直非常直接(主要是替换注释)。 我遇到问题的地方与过滤器(HTTP过滤器)有关。
目前,该应用程序有一个在一些端点中使用的过滤器。 注释用于指定应用过滤器的休息点。注释基于@NameBinding
这可以用Spring完成(即创建一个注释,对于我希望应用过滤器的每个rest端点方法,我会注释它)?
答案 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/