我有一个枚举:
package com.stardust.emul;
public enum BonusTypes{
BIRTHDAY,
REGISTRATION,
ACTIVE
}
和类成为一个spring bean(所有形成包com.stardust.utils
):
public interface BonusProcessor{
public void processBonus();
}
public class BirthdayBonusProcessor implements BonusProcessor{
//implementation
}
//and so forth
public class VisualService{
Map<BonusTypes, BonusProcessor> processors;
//Other staff
}
问题 :如何在弹簧配置文件中指定枚举类型的值?
在我的特殊情况下,我想写一些类似的东西:
<bean id="birthdayProcessor class="com.stardust.utils.BirthdayBonusProcessor />
<bean id="visualService" class="com.stardust.utils.VisualService">
<property name="processors">
<map>
<entry key ="__BonusTypes.BIRTHDAY__should_be_here" value-ref="birthdayProcessor"/>
</map>
</property>
</beans>
答案 0 :(得分:3)
如果该值是String
常量的名称,那么Spring非常聪明,可以将enum
转换为enum
类型。只需指定地图的密钥类型即可。
<bean id="visualService" class="com.stardust.utils.VisualService">
<property name="processors">
<map key-type="com.fully.qualified.BonusTypes">
<entry key="BIRTHDAY" value-ref="birthdayProcessor" />
</map>
</property>
</bean>