我目前正在集成渠道上收到一个类似的对象:
public class LargeObject {
private final String name;
private final Integer id;
}
我想从中获取name
,将其包装在我自己的对象中并将其发送到另一个频道。
因此,我通常希望以类似于<integration:json-to-object-transformer>
的方式转换消息有效负载。
我可以用<integration:service-activator>
来做,但是如果有专门用于这项工作的组件,我就会徘徊?
谢谢,
答案 0 :(得分:4)
适当的组件是
<transformer/>
假设你的新对象上有一个构造函数,并且你的LargeObject上有一个getName()方法,你可以使用带表达式的简单变换器...
<int:transformer expression="new foo.OtherObject(payload.name)"
input-channel="foo" output-channel="bar" />
如果你需要更复杂的东西,只需用这种方法制作一个POJO ......
public OtherObject transformIt(LargeObject input) {...}
并使用......
<int:transformer ref="transformerPojo"
input-channel="foo" output-channel="bar" />