首页 > 解决方案 > java - 如何在Java Spring Boot应用程序中从mysql动态生成Enum类型?

问题描述

在我的项目中,我们希望以 Enum 类型管理所有 REST API 错误代码,如以下代码:

package com.example.util
public enum ErrorType{
  SUCCESS("0000", "success")
  PARAMS_EMPTY("3001", "params cannot be empty")
}

我们遇到的问题是,如果我们将类放入util包中,每次我们在业务spring boot app中添加新的错误类型,我们都需要修改、发布和重新编译app和util项目,这将很难维护util包。基本上,我们更喜欢维护一个相对稳定的实用程序包。

所以我们正在考虑是否有一种方法可以动态生成Enum类型,我们可以提前在mysql中配置错误信息,然后我们可以在应用程序启动过程中将它们加载到enum类型中。

我不确定在 Java 中动态生成枚举类型是否是个好主意,或者是否有更好的解决方案来解决这个问题。

标签: javaspringenums

解决方案


您不能在枚举中添加或删除值。枚举是完整的静态枚举。

如果您需要处理变量值,则需要使用标准类。

例如,您可以拥有以下内容:

public Error {
   public static Error getByName(String name) {
        ....
   }

   public static Error getByCode(int code) {
        ....
   }
}

并按如下方式使用:

 Error myError404 = Error.getByCode(404);

显然,这段代码给了你很大的灵活性,但你无法提前知道是否存在特定的错误代码。而且你不能使用与枚举相关的 ide 设施。


推荐阅读