使用Spring初始化Enum成员

时间:2014-09-16 04:56:04

标签: spring enums initialization

我和以下的Enum一样。

public enum MyEnum {

ENUM1("ENUM1Code", "ENUM1 Desc"), ENUM2("ENUM2Code", "ENUM2"), ENUM3("ENUM3Code", "ENUM3");

private String code;
private String description;
private MyEnum(String code, String description) {
    this.code = code;
    this.description = description;
}
public String getCode() {
    return code;
}
public String getDescription() {
    return description;
}

}

有人可以建议我如何从这个枚举中删除初始化并通过Spring执行它吗?

提前致谢

迪利普

1 个答案:

答案 0 :(得分:0)

你不能因为枚举是静态物体 您可以外部化代码/描述并手动管理它们。

编辑:
我看不出需要使用Spring来完成这类工作;你可以用简单的代码实现相同的目标(使用一点Spring,PropertiesLoaderUtils实用程序类) 创建一个属性文件,您可以在其中存储每个枚举,代码和描述,并编写实用程序代码来读取数据;您的自定义代码的结果是这样的UDT:

class EnumWithData implements Serializable {
  MyEnum enumValue;
  String code;
  String description;

  //  Write properties get/set

  //  Equals check for enumValue only
  boolean equals(Object other) {
    EnumWithData b = (EnumWithData)other;
    return b.enumValue == this.enumValue;
  }
}

abstract class EnumWithDataUtility {
  private static Properties definition = PropertiesLoaderUtils.loadProperties("path/to/resource");

  public final static EnumWithData getEnumWithData(MyEnum enumValue) {
    EnumWithData udt = new EnumWithData();
    udt.enumValue = enumValue;
    ...
    return udt;
  }
}