首页 > 其他分享 >Spring 项目返回值枚举类编写技巧

Spring 项目返回值枚举类编写技巧

时间:2024-10-20 16:46:31浏览次数:3  
标签:code String Spring 枚举 ReturnCodeEnum 返回值 message public

Spring 项目返回值枚举类编写技巧

在 Spring 项目中,使用枚举类来统一管理返回值和状态码是一种非常优雅的实现方式。这不仅能提升代码的可读性和维护性,还能避免在代码中硬编码字符串或数字来表示状态码。本文将以 ReturnCodeEnum 为例,介绍如何编写和使用枚举类。

1. 枚举值定义

枚举类定义了项目中的所有状态码和相应的描述信息。每个枚举值代表一种返回状态,如操作成功、操作失败、权限问题等。通过这种方式,我们可以在项目的不同模块中使用相同的状态码,保证了一致性。

示例:
@Getter
public enum ReturnCodeEnum {
    /**操作失败**/
    RC999("999", "操作XXX失败"),
    /**操作成功**/
    RC200("200", "success"),
    /**服务降级**/
    RC201("201", "服务开启降级保护,请稍后再试!"),
    /**热点参数限流**/
    RC202("202", "热点参数限流,请稍后再试!"),
    /**系统规则不满足**/
    RC203("203", "系统规则不满足要求,请稍后再试!"),
    /**授权规则不通过**/
    RC204("204", "授权规则不通过,请稍后再试!"),
    /**无访问权限**/
    RC403("403", "无访问权限,请联系管理员授予权限"),
    RC401("401", "匿名用户访问无权限资源时的异常"),
    RC404("404", "404页面找不到的异常"),
    /**服务异常**/
    RC500("500", "系统异常,请稍后重试"),
    RC375("375", "数学运算异常,请稍后重试"),
    
    INVALID_TOKEN("2001", "访问令牌不合法"),
    ACCESS_DENIED("2003", "没有权限访问该资源"),
    CLIENT_AUTHENTICATION_FAILED("1001", "客户端认证失败"),
    USERNAME_OR_PASSWORD_ERROR("1002", "用户名或密码错误"),
    BUSINESS_ERROR("1004", "业务逻辑异常"),
    UNSUPPORTED_GRANT_TYPE("1003", "不支持的认证模式");

    /** 自定义状态码 **/
    private final String code;
    /** 自定义描述 **/
    private final String message;

    // 构造函数
    ReturnCodeEnum(String code, String message) {
        this.code = code;
        this.message = message;
    }
}

2. 枚举类构造方法

ReturnCodeEnum 中,每个枚举常量都带有两个参数:code(状态码)和 message(描述信息)。通过构造方法,我们可以将这些值初始化并赋予给每个枚举常量。这种设计方式非常简洁高效,确保了所有的状态码和描述信息在定义时就被固定下来,避免了运行时的动态赋值,从而提高了安全性和可维护性。

示例:
ReturnCodeEnum(String code, String message) {
    this.code = code;
    this.message = message;
}

3. 遍历枚举

有时我们需要根据返回码来查找对应的枚举值。Java 提供了内置的 values() 方法,它可以遍历所有枚举常量。我们可以通过遍历来实现查找功能。

遍历方法 V1:使用 for 循环
public static ReturnCodeEnum getReturnCodeEnum(String code) {
    for (ReturnCodeEnum element : ReturnCodeEnum.values()) {
        if (element.getCode().equalsIgnoreCase(code)) {
            return element;
        }
    }
    return null;
}
遍历方法 V2:使用 Java 8 Stream API

利用 Java 8 提供的 Stream 流操作,代码更加简洁高效。filter 用于筛选符合条件的枚举值,findFirst() 用于获取第一个符合条件的值。

public static ReturnCodeEnum getReturnCodeEnumV2(String code) {
    return Arrays.stream(ReturnCodeEnum.values())
                 .filter(x -> x.getCode().equalsIgnoreCase(code))
                 .findFirst()
                 .orElse(null);
}

4. 如何在项目中使用

枚举类在实际项目中的应用非常广泛。我们可以将 ReturnCodeEnum 用于构建统一的 API 响应,使每个接口的返回值格式一致。以下是一个示例,展示了如何使用 ReturnCodeEnum 构建 API 响应。

示例代码:
public class ResponseUtil {
    public static Map<String, Object> buildResponse(ReturnCodeEnum returnCode) {
        Map<String, Object> response = new HashMap<>();
        response.put("code", returnCode.getCode());
        response.put("message", returnCode.getMessage());
        return response;
    }
}

在控制器中,我们可以直接调用 ResponseUtil 来构建响应:

@RestController
@RequestMapping("/api")
public class ApiController {

    @GetMapping("/success")
    public Map<String, Object> successResponse() {
        return ResponseUtil.buildResponse(ReturnCodeEnum.RC200);
    }

    @GetMapping("/fail")
    public Map<String, Object> failResponse() {
        return ResponseUtil.buildResponse(ReturnCodeEnum.RC999);
    }
}

5. 扩展:异常处理与国际化

枚举类还可以与异常处理机制结合,统一管理异常响应。结合 Spring 的国际化支持,你还可以为不同语言的用户返回不同的错误信息。只需要将 message 替换为国际化资源文件中的键值即可。通过这种方法,所有的状态码和描述都被集中管理,减少了重复代码和硬编码问题。

标签:code,String,Spring,枚举,ReturnCodeEnum,返回值,message,public
From: https://blog.csdn.net/dhrmt/article/details/143094619

相关文章

  • 基于Spring Boot的高校运动会竞赛管理系统 毕设-附源码97766
    目 录摘要1绪论1.1研究背景1.2 研究意义1.3开发技术1.3.1SpringBoot框架1.3.2Vue框架1.3.3MySQL数据库2系统分析2.1可行性分析2.2总体设计原则2.3 业务流程分析2.3.1用户登录流程2.3.2 删除信息流程2.4 系统角色分析2.5 系统......
  • springboot+vue安财学科竞赛“寻队友”【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景在当今高等教育体系中,学科竞赛已成为培养学生创新精神、实践能力和团队协作能力的有效途径。安徽财经大学(简称“安财”)作为国内知名财经类高校,一直致力于通过多样化的学科竞赛活动激发学生的学术热情与探索精神。然而,在实际操作中,学生......
  • springboot+vue安康旅游网站【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景在当今社会,旅游业已成为推动地方经济、提升城市形象的重要力量。安康,这座位于秦岭巴山之间的美丽城市,以其丰富的自然资源、深厚的历史文化底蕴和独特的民俗风情,吸引了众多国内外游客的目光。然而,随着旅游业的快速发展,游客对于旅游信息......
  • springboot+vue安检人员执勤信息管理系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着社会的快速发展和人们安全意识的日益增强,安检工作已成为维护公共安全、保障社会秩序的重要环节。在各类交通枢纽、公共场所及特殊活动现场,安检人员承担着不可替代的责任,他们的执勤效率与管理水平直接关系到公共安全的防范能力。然......
  • Springboot计算机毕业设计EHR管理系统j5tnf
    Springboot计算机毕业设计EH本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能:公告信息,部门,岗位,员工,员工绩效,绩效考核,员工工资,意见反馈开题报告内容一、课题背景与意义随着企业规模的扩大和......
  • Springboot计算机毕业设计安稳汽车租赁管理系统mld41
    Springboot计算机毕业设计安本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能:用户,汽车品牌,汽车分类,汽车租赁,租赁订单,消息通知,还车记录,车辆续租开题报告内容一、项目背景与意义随着经济的快......
  • Springboot计算机毕业设计erpmes集成系统934a5
    Springboot计算机毕业设计erp本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能:部门,员工,产品分类,产品信息,入库登记,供应商,客户信息,出库登记,销售订单,采购订单开题报告内容一、课题背景与意义......
  • Springboot计算机毕业设计班级科创学分统计分析系统9e47q
    Springboot计算机毕业设计班本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能:班级,教师,学生,科创学分,项目类别,创新项目,学分申请开题报告内容一、选题背景及意义随着科技的不断进步和社会的发展......
  • Springboot计算机毕业设计毕业设计管理系统x7xs6
    Springboot计算机毕业设计毕业设计管理系统x7xs6本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能:学生,教师,毕设题目,毕设选题,毕设任务书,开题报告,中期检查,毕业论文,论文成绩,学院,答辩成绩,专业类......
  • Springboot计算机毕业设计北理珠青协志愿素拓系统eaa9n
    Springboot计算机毕业设计北理珠青协志愿素拓系统本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能:学生,教师,协会部门,部门申请,公益活动,活动报名,申诉信息,提醒消息,公益分充值,公告信息开题报告......