如何在Spring中使用枚举设置int属性?

时间:2012-11-28 05:58:58

标签: java spring

我有一个int的属性,我有一个枚举。如何在Spring bean配置中使用枚举设置int属性?

public class HelloWorld {
    private int type1;

    public void setType1(int type1) {
        this.type1 = type1;
    }
}

public enum MyEnumType1 {
    TYPE1(1),
    TYPE2(2);

    private final int index;

    private MyEnumType1(int i) {
        this.index = i;
    }

    public int getIndex() {
        return index;
    }
}

我尝试了以下但没有奏效。

<bean id="helloBean" class="com.example.HelloWorld">
    <property name="type1" value="TYPE1.index" />
</bean>

3 个答案:

答案 0 :(得分:1)

尝试

public void setType1(MyEnumType1 type1) {
this.type1 = type1.getIndex();
}

<bean id="helloBean" class="com.example.HelloWorld">
  <property name="type1" value="TYPE1 />
</bean>

答案 1 :(得分:1)

<bean id="helloBean" class="com.example.HelloWorld">
    <property name="type1" value="#{T(com.MyEnum).TYPE1.index}" />
</bean>

答案 2 :(得分:0)

Spring应用程序上下文:

<util:map id="myMap">
  <entry key="#{T(com.MyEnum).ELEM1}" value="value1" />
  <entry key="#{T(com.MyEnum).ELEM2}" value="value2" />
</util:map>

注入Map的类:

public class MyClass {

    private @Resource Map<MyEnum, String> myMap;
}

需要注意的重要事项是,在Spring上下文中,我使用了SpEL(Spring Expression Language),它仅在3.0版本之后可用。 @Resource按bean名称自动注入值。

this页面上的答案可以为您提供帮助。看看它。