Answers:
您是否尝试过“ TYPE1”?我想Spring还是要使用反射来确定“类型”的类型,因此完全限定的名称是多余的。Spring通常不接受冗余!
使用value子元素而不是value属性,并指定Enum类名称:
<property name="residence">
<value type="SocialSecurity$Residence">ALIEN</value>
</property>
这种方法比仅编写方法的优势value="ALIEN"
在于,如果Spring无法从属性推断枚举的实际类型(例如,属性的声明类型为接口),则该方法也适用。改编自araqnid的评论。
我知道这是一个非常老的问题,但是如果有人正在寻找更新的方法,请使用spring util命名空间:
<util:constant static-field="my.pkg.types.MyEnumType.TYPE1" />
您可以只执行“ TYPE1”。
如果要添加更多值并写入自定义类型,可以编写Bean编辑器(详细信息在Spring Docs中)。
Spring集成示例,基于Enum字段进行路由:
public class BookOrder {
public enum OrderType { DELIVERY, PICKUP } //enum
public BookOrder(..., OrderType orderType) //orderType
...
配置:
<router expression="payload.orderType" input-channel="processOrder">
<mapping value="DELIVERY" channel="delivery"/>
<mapping value="PICKUP" channel="pickup"/>
</router>