gpt4 book ai didi

java - 为什么仅当我的 Controller 具有@RequestMapping (produces = ...) 时,Spring 的 HandlerInterceptorAdapter 才会被调用两次?

转载 作者:行者123 更新时间:2023-11-30 08:47:18 26 4
gpt4 key购买 nike

经过长时间调试我的应用程序后,我发现了一些对我来说毫无意义的东西。每当我调用如下例所示注释的 Controller 时,我的拦截器就会执行两次。

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

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

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

我的拦截器只是一个简单的实现,如下所示:

public class AuthenticatorInterceptor extends HandlerInterceptorAdapter {

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

最佳答案

检查您的类是否也有一个 @RequestMapping 注释产生不同的 mimetype。也许这是您问题的根源,因为这两个“产生”声明可能是您的拦截器被调用两次的原因。

关于java - 为什么仅当我的 Controller 具有@RequestMapping (produces = ...) 时,Spring 的 HandlerInterceptorAdapter 才会被调用两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32514762/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com