自己实现的 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 了,为什么我这里就不会触发呢 ?
有大佬踩过这个坑吗?
3 回答
慕妹3146593
TA贡献1820条经验 获得超9个赞
已经找到问题所在的,这个 ResponseBodyAdvice 只支持 @ResponseBody 注解的 controller 方法,
同样,RequestBodyAdvice 只支持带有 @RequestBody 注解的 controller 方法参数的方法,同时上报的数据必须是 json or xml
也就是说,想要用这两个实现 http 内容的加密解密,是很有局限性的。
并不支持表单 post 请求
慕姐4208626
TA贡献1852条经验 获得超7个赞
在 return methodParameter.getMethodAnnotation(ResponseEncode.class) != null;前面打印一下有没有反应?
添加回答
举报
0/150
提交
取消