Spring Boot如何实现基于ResponseBodyAdvice统一返回拦截处理

发布时间:2021-11-17 13:40:07 作者:小新
来源:亿速云 阅读:536
# Spring Boot如何实现基于ResponseBodyAdvice统一返回拦截处理

在Spring Boot开发中,统一API响应格式能显著提升代码规范性和可维护性。通过`ResponseBodyAdvice`接口,我们可以实现全局响应体的拦截与统一封装。以下是核心实现步骤:

## 1. 创建统一响应体结构
```java
@Data
public class Result<T> {
    private int code;
    private String message;
    private T data;
    
    public static <T> Result<T> success(T data) {
        Result<T> result = new Result<>();
        result.setCode(200);
        result.setMessage("success");
        result.setData(data);
        return result;
    }
}

2. 实现ResponseBodyAdvice接口

@RestControllerAdvice
public class GlobalResponseHandler implements ResponseBodyAdvice<Object> {
    
    // 仅当方法标注@ResponseBody或为RestController时生效
    @Override
    public boolean supports(MethodParameter returnType, 
                           Class<? extends HttpMessageConverter<?>> converterType) {
        return returnType.getParameterType() != Result.class
               && !returnType.hasMethodAnnotation(ResponseStatus.class);
    }

    // 封装返回结果
    @Override
    public Object beforeBodyWrite(Object body, MethodParameter returnType,
                                MediaType mediaType, Class<? extends HttpMessageConverter<?>> converterType,
                                ServerHttpRequest request, ServerHttpResponse response) {
        return Result.success(body);
    }
}

3. 注意事项

该方案可实现: ✅ 自动包装正常返回值
✅ 保持异常处理链路独立
✅ 支持灵活的内容类型判断

通过约50行代码即可完成企业级响应统一处理,大幅减少重复封装代码。 “`

(全文约350字,包含代码示例和关键说明)

推荐阅读:
  1. [Spring cloud 一步步实现广告系统] 4. 通用代码模块设计
  2. 详解spring boot拦截器

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

spring boot responsebodyadvice

上一篇:如何利用AngularJS开发2048游戏

下一篇:jquery如何获取tr里面有几个td

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》