spring通过filter,Interceptor统一处理ResponseBody的返回值

项目中有一个需求,需要统一处理一下@ResponseBody注解的返回值(比如打印),在网上找了一下,有建议用AOP来做的,但是个人认为项目中用多个AOP并不优雅;通过google,找到了spring的ResponseBodyAdvice接口,用来对返回体做统一处理。

例如:统一打印返回体中的内容

@ControllerAdvice(basePackages = "cc.openwiki.controller.biz")
public class LogResponseAdvice implements ResponseBodyAdvice {
    @Override
    public boolean supports(MethodParameter returnType, Class> converterType) {
        return true;
    }

    @Override
    public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,Class> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
        log.info("返回值为:{}", JSON.toJSONString(body));
        return body;
    } 
  




by sim

你可能感兴趣的:(sping)