为什么只有当我的控制器有@RequestMapping(产生= ...)时,Spring的HandlerInterceptorAdapter才被调用两次?

时间:2015-09-11 02:56:00

标签: java spring spring-mvc

经过很长时间调试我的应用程序后,我意识到对我来说毫无意义的事情。每当我调用下面举例说明的控制器时,我的拦截器就会被执行两次。

@RequestMapping(method = RequestMethod.GET, produces = MediaType.IMAGE_JPEG_VALUE)
public ResponseEntity<byte[]> getMedia(String url) throws IOException {
...
}

出于测试目的,我删除了“产生”部分,同一个拦截器只被调用一次。

有人可以告诉我为什么会这样吗?它被调用两次的事实是产生错误,因为在第二次调用时,所有请求标头都是空的,因此我的验证失败。

我的拦截器只是一个实现如下:

public class AuthenticatorInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request,
            HttpServletResponse response, Object handler) throws Exception {
        //validations
        return super.preHandle(request, response, handler);
    }

1 个答案:

答案 0 :(得分:2)

检查您的类是否还有一个生成不同mimetype的@RequestMapping注释。也许这是你问题的根源,因为两者都会产生&#34;声明可能是你的拦截器被调用两次的原因。