繁体   English   中英

用enum初始化bean的属性怎么样?

[英]How about initializition a bean's property with enum?

我有一个枚举:

package com.stardust.emul;

public enum BonusTypes{
    BIRTHDAY,
    REGISTRATION,
    ACTIVE
}

和类作为弹簧的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>

如果该值是enum常量的名称,Spring足够聪明地将String转换为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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM