使用spring将枚举的值注入属性

我有一个类似于下面的枚举

public enum MyEnum { ABC("some string"), DEF("some string"), GHI("another string"); String value; private MyEnum(String value) { this.value = value; } public String value() { return this.value; }} 

我想创建一个util:map,使用枚举的值作为键而不是枚举本身。 所以地图看起来像这样:

 "some string" -> "mapped output 1" "another string" -> "mapped output 2" 

我知道我可以使用util:constant来获取枚举,但我需要枚举所代表的值。

所以我的配置文件在这一刻看起来像这样:

      

有没有办法可以获得.value()甚至可以访问value属性来使用它作为密钥?

我试图将键类型声明为字符串,希望spring能够解决这个问题,但它似乎忽略了这一点。

使用spring 2.5.1,我无法修改枚举

如果您无法访问表达式语言,则必须回退到显式的MethodInvokingFactoryBean

     

您可以使用抽象父bean定义缩短重复XML。

       

您也可以跳过MethodInvokingFactoryBean并使用

   

但这意味着为每个枚举常量声明单独的顶级bean以及它们的value() ,而使用MIFB允许您使用匿名内部bean。

以下是如何获得下面注入的值是弹簧2.5中的弹簧配置。

   ABC     DEF                 

为了使其工作,您需要在枚举上使用toString方法。

 public enum MyEnum { ABC("some string a"), DEF("some string b"), GHI("another string"); String value; private MyEnum(String value) { this.value = value; } public String value() { return this.value; } public String toString() { return this.value; } }