IntegrationFlowBuilder提供顶级 API,用于生成连接到消息流的集成组件。 当您的集成可以通过单个流程完成时(通常是这种情况),这很方便。 或者,可以通过实例加入实例。IntegrationFlowMessageChannelSpring中文文档

默认情况下,在 Spring Integration 术语中表现为“链”。 也就是说,终结点由实例自动和隐式连接。 消息流实际上并不是作为链构建的,这提供了更大的灵活性。 例如,如果您知道流程中的任何组件的名称(即,如果您显式定义它),则可以向该组件发送消息。 还可以在流中引用外部定义的通道,以允许使用通道适配器(以启用远程传输协议、文件 I/O 等),而不是直接通道。 因此,DSL 不支持 Spring Integration 元素,因为在这种情况下它不会增加太多价值。MessageFlowDirectChannelinputChannelchainSpring中文文档

由于 Spring Integration Java DSL 生成与任何其他配置选项相同的 Bean 定义模型,并且基于现有的 Spring Framework 基础结构,因此它可以与 XML 定义一起使用,并与 Spring Integration 消息传递注释配置连接。@ConfigurationSpring中文文档

您还可以使用 lambda 定义直接实例。 以下示例演示如何执行此操作:IntegrationFlowSpring中文文档

@Bean
public IntegrationFlow lambdaFlow() {
    return f -> f.filter("World"::equals)
                   .transform("Hello "::concat)
                   .handle(System.out::println);
}

此定义的结果是与隐式直接通道连接的同一组集成组件。 这里唯一的限制是,此流是使用命名的直接通道 - 启动的。 此外,Lambda 流不能从 或 开始。lambdaFlow.inputMessageSourceMessageProducerSpring中文文档

从版本 5.1 开始,这种被包装到代理以公开生命周期控制并提供对内部关联的 的 的访问。IntegrationFlowinputChannelStandardIntegrationFlowSpring中文文档

从 V5.0.6 开始,为 an 中的组件生成的 Bean 名称包括流 Bean,后跟一个点 () 作为前缀。 例如,前面示例中的 for 将导致 Bean 名称 。 (这是页面的缩写。 该端点的实现 Bean 的 Bean 名称为 (从 V5.1 开始),其中使用其组件类型,而不是类的完全限定名称。 当必须在流中生成 Bean 名称时,对所有 s 应用相同的模式。 这些生成的 Bean 名称在流 ID 前面加上流 ID,用于解析日志或在某些分析工具中将组件组合在一起等目的,以及在运行时同时注册集成流时避免争用条件。 有关更多信息,请参见动态和运行时集成流IntegrationFlow.ConsumerEndpointFactoryBean.transform("Hello "::concat)lambdaFlow.o.s.i.config.ConsumerEndpointFactoryBean#0o.s.iorg.springframework.integrationTransformerlambdaFlow.transformer#0MethodInvokingTransformerNamedComponentSpring中文文档