Sha*_*mil 3 transform handle spring-integration
你能解释一下,如果bouth方法可以返回新的有效负载类型,为什么我应该使用transform方法而不是使用spring集成的handle?
例如
@Bean
public IntegrationFlow integerFlow() {
return f -> f.handle(Integer.class, (p, h) -> p * 2);
}
Run Code Online (Sandbox Code Playgroud)
和
@Bean
public IntegrationFlow integerFlow() {
return f -> f.transform(Integer.class, p -> p * 2);
}
Run Code Online (Sandbox Code Playgroud)
为什么做同样的事情。我想是这样。
对于您的简单示例来说,它们是相同的,但在许多其他用例中,最好选择其中之一。
第一个区别是,当您返回整个Message而不是仅返回时,变压器可以完全控制payload。框架中的转换器不会修改此类消息并将其按原样生成到输出通道。同时,服务激活器修改该消息复制请求标头。Message因此,当您要从变压器返回 a 时,始终需要记住:您还需要自己携带请求标头。否则,您可能会丢失一些方便的标头(例如replyChannel相关详细信息),并且下游逻辑将无法工作。
另一个区别是转换器总是需要返回一些结果值。服务激活器在这件事上是宽容的,并且出于某种原因,您可以自由返回null以停止流程。
老实说,我总是说:Transformer 是一个特定的服务激活器实现,有其特定的逻辑和需求。
| 归档时间: |
|
| 查看次数: |
2309 次 |
| 最近记录: |