此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Integration 6.5.1spring-doc.cadn.net.cn

Java DSL

Spring Integration Java 配置和 DSL 提供了一组方便的构建器和一个流畅的 API,允许您从 Spring 配置 Spring Integration 消息流@Configuration类。spring-doc.cadn.net.cn

用于 Spring Integration 的 Java DSL 本质上是 Spring Integration 的门面。 DSL 提供了一种简单的方法,可以使用 fluent 将 Spring Integration Message Flows 嵌入到您的应用程序中Builderpattern 以及来自 Spring Framework 和 Spring Integration 的现有 Java 配置。 我们还使用并支持 lambda(在 Java 8 中可用)来进一步简化 Java 配置。spring-doc.cadn.net.cn

咖啡馆提供了使用 DSL 的一个很好的例子。spring-doc.cadn.net.cn

DSL 由IntegrationFlow流畅的 API(请参阅IntegrationFlowBuilder). 这会产生IntegrationFlow组件,该组件应注册为 Spring bean(通过使用@Bean注释)。 构建器模式用于将任意复杂的结构表示为可以接受 lambda 作为参数的方法的层次结构。spring-doc.cadn.net.cn

IntegrationFlowBuilder仅收集集成组件 (MessageChannel实例AbstractEndpoint实例,依此类推)在IntegrationFlowbean 用于通过IntegrationFlowBeanPostProcessor.spring-doc.cadn.net.cn

Java DSL 直接使用 Spring Integration 类,并绕过任何 XML 生成和解析。 然而,DSL 提供的不仅仅是 XML 之上的语法糖。 其最引人注目的功能之一是能够定义内联 lambda 来实现端点逻辑,无需外部类来实现自定义逻辑。 从某种意义上说,Spring Integration 对 Spring 表达式语言 (SpEL) 和内联脚本的支持解决了这个问题,但 lambda 更容易、更强大。spring-doc.cadn.net.cn

以下示例显示了如何使用 Java 配置进行 Spring 集成:spring-doc.cadn.net.cn

@Configuration
@EnableIntegration
public class MyConfiguration {

    @Bean
    public AtomicInteger integerSource() {
        return new AtomicInteger();
    }

    @Bean
    public IntegrationFlow myFlow(AtomicInteger integerSource) {
        return IntegrationFlow.fromSupplier(integerSource::getAndIncrement,
                                         c -> c.poller(Pollers.fixedRate(100)))
                    .channel("inputChannel")
                    .filter((Integer p) -> p > 0)
                    .transform(Object::toString)
                    .channel(MessageChannels.queue())
                    .get();
    }
}

前面配置示例的结果是,它创建了ApplicationContext启动、Spring Integration 端点和消息通道。 Java 配置可用于替换和增强 XML 配置。 无需替换所有现有的 XML 配置即可使用 Java 配置。spring-doc.cadn.net.cn