Spring Integration XML - 在发送到频道之前解组

时间:2016-02-10 12:34:10

标签: spring-integration

在我的应用程序中,我有一个路由器,它可以将XML标签发送到适当的频道:

serviceChannel

使用此XML会将每个标记路由到activityChannel<root> <service attr1="x" attr2="y" /> <activity anotherAttr="W" /> </root>

class Service {
  private String attr1;
  private String attr2;

  /* Setter and getter omitted */
}

我的服务激活器(S)POJO是这样的:

<!-- Service activators --> 
  <int:service-activator input-channel="serviceChannel" method="schedule">
    <bean class="it.mypkg.Service" />
  </int:service-activator>

这是applicationContext.xml配置:

Node

路由器将整个bean发送给Node,我需要“手动”提取属性。

有一种方法可以“解组”attr1attr2@XmlRootElement我将获得XML中提供的值吗?

通常我使用简单的Unmarshaller(使用JAXB)并添加注释@XmlAttributeService等来执行此操作。

我认为在传递给POJO之前我需要使用SI-XML UnmarshallingTransformer但我真的不知道如何做到这一点...此外,这应该是“足够通用”来处理所有标签(当然,所有POJO类都像{ {1}}和Activity@XmlAttribute等)

1 个答案:

答案 0 :(得分:1)

使用Unmarshalling Transformer,然后在未编组的对象上进行路由。