Spring 集成 Java 配置和 DSL 提供了一组方便的构建器和一个 Fluent API,允许您从 Spring 类配置 Spring 集成消息流。@Configurationspring-doc.cn

(另请参阅 Kotlin DSL。spring-doc.cn

(另请参见 Groovy DSL。spring-doc.cn

用于 Spring Integration 的 Java DSL 本质上是 Spring Integration 的门面。 DSL 提供了一种简单的方法,通过将 Fluent 模式与 Spring Framework 和 Spring Integration 中的现有 Java 配置结合使用,将 Spring Integration 消息流嵌入到您的应用程序中。 我们还使用并支持 lambda(在 Java 8 中提供)来进一步简化 Java 配置。Builderspring-doc.cn

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

DSL 由 Fluent API 提供(请参阅 )。 这将生成组件,该组件应注册为 Spring bean(通过使用 Comments)。 构建器模式用于将任意复杂的结构表示为可以接受 lambda 作为参数的方法层次结构。IntegrationFlowIntegrationFlowBuilderIntegrationFlow@Beanspring-doc.cn

唯一在 bean 中收集集成组件(实例、实例等),以便通过 .IntegrationFlowBuilderMessageChannelAbstractEndpointIntegrationFlowIntegrationFlowBeanPostProcessorspring-doc.cn

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

下面的示例展示了如何使用 Java 配置进行 Spring 集成:spring-doc.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();
    }
}

前面的配置示例的结果是,它在启动后创建 Spring 集成端点和消息通道。 Java 配置可用于替换和增强 XML 配置。 您无需替换所有现有的 XML 配置即可使用 Java 配置。ApplicationContextspring-doc.cn