springboot处理响应json
钢翼
编程
用springboot,我们一般都是用
@ResponseBody
//或者
@RestController
注解控制器,来实现直接返回对象。框架默认会用jackson序列化对象并返回给前端 。
有时我们需要统一处理响应报文json,比如加密或处理其他的逻辑。
如果我们用拦截器和过滤器,由于json已经写到response里面去了,所以我们没法操作。这个时候就需要用到ResponseBodyAdvice了。代码如下
@Component
@ControllerAdvice
public class MyResponseBodyAdvice implements ResponseBodyAdvice {
@Override
public boolean supports(MethodParameter methodParameter, Class aClass) {
return true;
}
@Override
public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
//在这里处理对象o并返回处理后的新对象即可。
//可以通过 methodParameter.getMethodAnnotation 方法获取控制器方法上的注解。
return o;
}
}