Spring Rest WS:如何在单个端点中处理多个XML有效负载?

时间:2016-06-20 20:57:38

标签: java xml spring spring-mvc jaxb

我正在创建一个Spring REST WS端点(只需要暴露一个外部URL)。客户希望我们在收到请求后立即确认(200 OK)并在后台处理。客户端可以在请求主体中为不同的请求发送不同类型的xml有效负载。例如:在一个请求中,客户端可以发送Employee数据以添加xml有效负载,而在其他请求中,他们可以发送客户数据以进行进一步处理。

在最简单的解决方案中,我们可以这样做:

  1. 创建JAXB带注释的POJO(客户,扩展的员工,员工) 共同的抽象类;例如RequestPayload或其他) 对应于每个可能的xml有效负载,
  2. 在控制器上以字符串形式检索xml有效内容,确定根目录 元素名称(“员工或”客户“......)和
  3. 使用我们的unmarshaller(使用JAXB创建)来转换xml String 到Employee / Customer POJO实例并将此引用存储在 RequestPayload变量。

  4. 进行进一步的服务器端处理..

  5. 不确定这是否是一个优雅的解决方案..

    Spring是否为MessageConverters提供了任何功能/扩展,让我们能够以更干净/更优雅的方式完成步骤1-3?

    提前致谢。

1 个答案:

答案 0 :(得分:1)

您的问题看起来像EIP Content-Based Router。 Camel可以通过检查"优雅"中的消息体来帮助您将消息路由到不同的端点。方式和弹簧支持骆驼非常棒。

骆驼的美感可以将您的业务逻辑中的路由等问题分开,您可以在以后添加更多的邮件格式,而不会影响业务逻辑。