用枚举初始化 bean 的 属性 怎么样?
How about initializition a bean's property with enum?
我有一个枚举:
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
常量的名称。只需指定地图的键类型。
<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>
我有一个枚举:
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
常量的名称。只需指定地图的键类型。
<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>