使用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; } }