springboot学习-ResponseBodyAdvice

最近在学习springboot,看到了封装返回值这块,了解到了ResponseBodyAdvice接口

作用:
ResponseBodyAdvice是spring4.1的新特性,其作用是在响应体写出之前做一些处理,比如,修改返回值、加密等。

接口方法
ResponseBodyAdvice接口一提供了两个方法

  • support,通过supports方法,我们可以选择哪些类,或者哪些方法要对response进行处理,其余的则不处理。
  • beforeBdoyWrite,在该方法里,为对response处理的具体代码。

具体实现代码

@RestControllerAdvice(basePackages = {"src.main.java.controller"})
public class ControllerResponseAdvice implements ResponseBodyAdvice {

	//过滤已经被ResultData封装好的数据,以及标注了NotControllerResponseAdvice的数据
    @Override
    public boolean supports(MethodParameter methodParameter, Class aClass) {
        return !(methodParameter.getParameterType().isAssignableFrom(ResultData.class) ||
                methodParameter.hasMethodAnnotation(NotControllerResponseAdvice.class));
    }

    @Override
    public Object beforeBodyWrite(Object data, MethodParameter methodParameter, MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
    	//当返回值为string的时候,需单独处理
        if (methodParameter.getParameterType().equals(String.class)){
            ObjectMapper object = new ObjectMapper();
            try{
                return object.writeValueAsString(new ResultData(data));
            }catch(JsonProcessingException e){
                throw new APIException(ResultCode.RESPONSE_ERR, e.getMessage());
            }
        }
        return new ResultData(data);
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值