我有一个枚举:
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
}
问题:如何在 Spring 配置文件中指定枚举类型的值?
在我的具体情况下,我想写这样的东西:
<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>
最佳答案
Spring 足够聪明,可以将 String
转换为 enum
类型(如果该值是 enum
常量的名称)。只需指定 map 的键类型即可。
<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>
关于java - 用枚举初始化 bean 的属性怎么样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29568927/