3

我有一个 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>
4

3 回答 3

2
<bean id="helloBean" class="com.example.HelloWorld">
    <property name="type1" value="#{T(com.MyEnum).TYPE1.index}" />
</bean>
于 2012-11-28T08:43:09.783 回答
1

试试看

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

<bean id="helloBean" class="com.example.HelloWorld">
  <property name="type1" value="TYPE1 />
</bean>
于 2012-11-28T07:03:05.183 回答
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 表达式语言),它仅在 3.0 版之后才可用。@Resource按 bean 名称自动注入值。

页面上的答案可以帮助您。看看它。

于 2012-11-28T06:46:24.383 回答