Transformers
DSL API 提供了一个便捷流畅的 Transformers 工厂,可在 .transform() EIP 方法中作为内联目标对象定义使用。以下示例展示了其用法:
@Bean
public IntegrationFlow transformFlow() {
return IntegrationFlow.from("input")
.transform(Transformers.fromJson(MyPojo.class))
.transform(Transformers.serializer())
.get();
}
它避免了使用setter带来的不便编码,并使流程定义更加直观。请注意,你可以使用 Transformers 将目标 Transformer 实例声明为 @Bean 实例,并再次在 IntegrationFlow 定义中通过 bean 方法使用它们。尽管如此,如果内联对象尚未定义为 bean,DSL 解析器会负责处理这些内联对象的 bean 声明。
有关更多信息和支持的工厂方法,请参阅 Javadoc 中的 Transformers。
从 6.2 版本开始,引入了 transformWith(Consumer<TransformerEndpointSpec>) 变体,以便通过单个构建器参数配置所有转换器及其端点选项。这种风格使 DSL 更具可读性,并在修改代码时提升了开发体验。这也使得 Groovy 和 Kotlin DSL 更加直观。
另请参阅 Lambdas 与 Message<?> 参数。