我有一个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>
答案 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页面上的答案可以为您提供帮助。看看它。