当前位置: 代码迷 >> 综合 >> 高复用服务响应对象的设计及抽象封装
  详细解决方案

高复用服务响应对象的设计及抽象封装

热度:12   发布时间:2023-10-28 23:04:20.0

在我们进行搭建框架进行项目开发时,控制层接收参数或者无参进行响应时,总是需要返回点什么,那么我们就可以把这种响应封装起来,便于响应的调用。

话不多少,直接上代码。

1、泛型抽象封装类

import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.map.annotate.JsonSerialize;import java.io.Serializable;/*** 高复用服务响应对象的泛型抽象封装类* @param <T>*/
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
//保证序列化json的时候,如果是null的对象,key也会消失
public class ServerResponse<T> implements Serializable {private int status;private String msg;private T data; // 通用的数据类型// 一些构造器private ServerResponse(int status, String msg, T data) {this.status = status;this.msg = msg;this.data = data;}private ServerResponse(int status) {this.status = status;}private ServerResponse(int status, T data) {this.status = status;this.data = data;}private ServerResponse(int status, String msg) {this.status = status;this.msg = msg;}@JsonIgnore//保证序列化json的时候,如果是null的对象,key也会消失public boolean isSuccess(){// 判断是否成功标志return this.status == ResponseCode.SUCCESS.getCode();}// 开放调用public int getStatus(){return  status;}public T getData(){return data;}public String getMsg(){return msg;}// 开放成功方法public static <T> ServerResponse<T> createBySuccess(){return new ServerResponse<T>(ResponseCode.SUCCESS.getCode());}public static <T> ServerResponse<T> createBySuccessMessage(String msg){return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),msg);}public static <T> ServerResponse<T> createBySuccess(T data){return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),data);}public static <T> ServerResponse<T> createBySuccess(String msg,T data){return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),msg,data);}// 开放错误方法public static <T> ServerResponse<T> createByError(){return new ServerResponse<T>(ResponseCode.ERROR.getCode(),ResponseCode.ERROR.getDesc());}public static <T> ServerResponse<T> createByErrorMessage(String errorMessage){return new ServerResponse<T>(ResponseCode.ERROR.getCode(),errorMessage);}public static <T> ServerResponse<T> createByErrorCodeMessage(int errorCode,String errorMessage){return new ServerResponse<T>(errorCode,errorMessage);}}

2、响应的枚举类

/*** 响应的枚举类,通过定义一些可能会遇到的标志性数字,* 来反应对应的结果。*/
public enum ResponseCode {SUCCESS(0,"SUCCESS"),ERROR(1,"ERROR"),NEED_LOGIN(10,"NEED_LOGIN"),ILLEGAL_ARGUMENT(2,"ILLEGAL_ARGUMENT");// 非法参数private final int code;private final String desc;ResponseCode(int code,String desc){this.code = code;this.desc = desc;}public int getCode(){return  code;}public String getDesc(){return desc;}
}

 

  相关解决方案