ResponseBodyAdvice:对返回值二次封装

代码

@Configuration
public class ReturnConfig {
    @RestControllerAdvice( {"aaa.controller", "bbb.controller"})
    static class ResponseAdvice implements ResponseBodyAdvice<Object> {
        private static final Object[] DEFAULT_PARAMETERS = {""};

		// 不按照统一返回格式处理的类
        private static final String[] UNSUPPORT = {
            "aaa.controller.AController.method1",
            "bbb.controller.BController.method2",
            "ccc.controller.CController.method3"
        };

		// 判断是否支撑的hook,在这里与上述关联起来,在其中的就返回false
        @Override
        public boolean supports(MethodParameter methodParameter,
            Class<? extends HttpMessageConverter<?>> messageConverter) {
            String methodName = "";
            if (methodParameter != null) {
                Method method = methodParameter.getMethod();
                if (method != null) {
                // String methodName = methodParameter.getMethod().getDeclaringClass().getName() + "." 拿到的结果与UNSUPPORT匹配
                + methodParameter.getMethod().getName();

                    methodName = method.getDeclaringClass().getName() + "." + methodParameter.getMethod().getName();
                }
            }
            if (Arrays.asList(UNSUPPORT).stream().anyMatch(xStr -> xStr.equals(finalMethodName))) {
                return false;
            }
            return true;
        }
        
		// 统一的返回结果
        @Override
        public Object beforeBodyWrite(Object body, MethodParameter methodParameter, MediaType mediaType,
            Class<? extends HttpMessageConverter<?>> messageConverter, ServerHttpRequest serverHttpRequest,
            ServerHttpResponse serverHttpResponse) {
            if (body == null) {
                return new CommonResult<Object>();
            }

            if (body instanceof CommonResult) {
                // do sth...
                return body;
            }

            // Handling the case where the body value is String,
            if (body instanceof String) {
                return JSON.toJSONString(new CommonResult<>(body));
            }

            return new CommonResult<Object>(body);
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值