使用自定义ObjectMapper进行Spring XD Json到Java转换

时间:2014-12-09 15:16:33

标签: spring-xd

是否有一种使用自定义ObjectMapper(Jackson)将JSON有效负载转换为Java对象的简单方法,或者我是否必须提供自定义类型转换器。我知道我可以使用处理器,但不知何故,使用流定义的输入和输出类型会很好。

在第二种情况下:我甚至能够为application / json提供Java的自定义类型转换器吗?

文档说明:“customMessageConverters是按照定义的顺序添加到标准转换器之后的。因此,为新媒体类​​型添加转换器通常比替换现有转换器更容易。”

我敢打赌,现有的“应用程序/ json”转换器 - 但乍一看,如果甚至可以替换现有的转换器,我找不到更多信息。

谢谢! 彼得

1 个答案:

答案 0 :(得分:1)

如果查看streams.xml您可以看到相关配置。配置的列表用于构造CompositeMessageConverter,它按列表顺序访问每个MessageConverter,直到找到可以执行转换并返回非null结果的列表。通过过滤所有继承AbstractFromMessageConverter的候选消息转换器列表,为配置用于转换的每个模块实例(即,定义inputType或outputType值)创建CompositeConverter实例。该列表与那些响应 true 公共布尔supportsTargetMimeType(MimeType mimeType)(其中mimeType是input / outputType的值)的列表配对。 CompositeMessageConverter被注入相应的MessageChannel并转换有效负载。

你可以做几件事。您可以覆盖 xd.messageConverters bean定义。例如,您可以使用自己的子类替换 JsonToPojoMessageConverter PojoToJsonMessageConverter 。您还可以在上述转换器之前在列表中插入您自己的实现,并使您的实现仅匹配您需要自定义JSON映射器的特定域对象。 另一种可能性是定义您自己的mime类型,并为该mime类型提供转换器 customMessageConverters 。无论如何,请遵循extending Spring XD

的这些准则