通用Result<T>公共响应结果对象设计

通用Result公共响应结果对象设计

在多年的工作以及和平时和朋友探讨中发现几乎每家公司都会有自己的项目统一返回结果对象,设计数据结构大体上都一致,只是在封装的方法及易用上略有不同,另外还存在的一个问题就是:通过sonar扫描,绝大部分公司封装的统一响应结果对象在序列化问题上没有进行规避,这样就会导致在使用疏忽的情况下发生意想不到的问题。这里我以多年的经验设计了一个实用易用可避免序列化问题的响应结果对象。

解决的问题

  1. 使用限定泛型系列化Result<T extends Serializable>,避免适用过程中传入未序列化的对象导致序列化问题,从根本避免序列化问题。1
  2. 增加序列化的扩展字段private Serializable extend,在某些场景,我们不仅会返回结果还会返回扩展结果,这时这个字段就很有用,并且这里避免了序列化对象问题。
  3. 封装常用静态响应结果方法,使用时Result.ok(...)一行代码搞定,简单易用。

完整代码

import lombok.Data;

import java.io.Serializable;
import java.util.Collection;

/**
 * 接口公共响应对象
 * @author fay
 * @date 2022-01-24
 */
@Data
public class Result<T extends Serializable> implements Serializable {
   
    private static final long serialVersionUID = 1L;

    /**请求成功标识*/
    private boolean success = true;
    /**响应码*/
    private Integer code = OK_200;
    /**响应消息*/
    private String message = OK_MSG;
    /**响应对象*/
    private T data;
    /**响应列表*/
    private Collection<T> dataList;
    /**响应扩展*/
    private Serializable extend;
    /**时间戳*/
    private long timestamp = System.currentTimeMillis();

    /**默认响应码:200成功,500失败,401无权限*/
    public static final int OK_200 = 200;
    public static final int ERROR_500 = 500;
    public 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值