RequestBodyAdvice 和 ResponseBodyAdvice 不执行

自己实现的 RequestBodyAdvice 和 ResponseBodyAdvice 不执行啊
打断点发现都没有进去。

@RestControllerAdvice(annotations = RestController.class)
public class EncodeResponseAdvice implements ResponseBodyAdvice {

    @Override
    public boolean supports(MethodParameter methodParameter, Class aClass) {
        return methodParameter.getMethodAnnotation(ResponseEncode.class) != null;
    }

    @Override
    public Object beforeBodyWrite(Object body, MethodParameter methodParameter, MediaType mediaType, Class aClass,
                                  ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
        return body;
    }

}

无论是用 @RestControllerAdvice 还是@ControllerAdvice 都尝试过。
注解里写 basePackage 也尝试过。
整个 baidu google 能搜的内容都看过,并没有更多地方需要配置的吧?
从日志里可以看到这个类已经被注册为 bean 了,为什么我这里就不会触发呢 ?

有大佬踩过这个坑吗?

RISEBY
浏览 958回答 3
3回答

慕妹3146593

已经找到问题所在的,这个 ResponseBodyAdvice 只支持 @ResponseBody 注解的 controller 方法,同样,RequestBodyAdvice 只支持带有 @RequestBody 注解的 controller 方法参数的方法,同时上报的数据必须是 json or xml 也就是说,想要用这两个实现 http 内容的加密解密,是很有局限性的。并不支持表单 post 请求

慕姐4208626

在 return methodParameter.getMethodAnnotation(ResponseEncode.class) != null;前面打印一下有没有反应?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java