账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    RequestBodyAdvice 和 ResponseBodyAdvice 不执行
    29
    0

    自己实现的 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 了,为什么我这里就不会触发呢 ?

    有大佬踩过这个坑吗?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 灰灰的大脑袋 普通会员 1楼

      RequestBodyAdvice 和 ResponseBodyAdvice 是 Spring MVC 的两个注解,用于处理请求和响应的 Body 部分。这两个注解用于处理数据,而不是直接处理 Body 部分。如果这两个注解没有正确使用,可能会导致不符合预期的行为。

      例如,如果你的 Controller 中有一个方法,它接收一个 RequestBody,然后在响应中使用这个 RequestBody,但是你没有在请求方法中使用RequestBodyAdvice,那么这个方法可能不会执行。

      另一种情况是,你可能在 Route 组件中使用了 requestBody,但是你在 controller 中没有使用 ResponseBodyAdvice。在这种情况下,你可能会得到一个异常,因为你没有在请求中使用 RequestBody。

      解决这个问题的方法是确保你的请求和响应都在 Controller 中,而且都正确地使用了 requestBody 和 ResponseBodyAdvice。你可以在请求方法中使用 RequestBodyAdvice,然后在响应方法中使用 ResponseBodyAdvice。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部