Java DSL

Spring Integration Java 配置和 DSL 提供了一组方便的构建器和流畅的 API,让你可以从 Spring @Configuration 类配置 Spring Integration 消息流。

(另请参阅 Kotlin DSL。)

(另请参阅 Groovy DSL。)

Spring Integration 的 Java DSL 本质上是 Spring Integration 的一个门面。DSL 通过使用流畅的 Builder 模式以及 Spring Framework 和 Spring Integration 中现有的 Java 配置,提供了一种将 Spring Integration 消息流嵌入到应用程序中的简单方法。我们还使用并支持 Lambda 表达式(Java 8 中可用)来进一步简化 Java 配置。

咖啡馆提供了一个使用 DSL 的好例子。

DSL 由 IntegrationFlow 流畅 API(参见 IntegrationFlowBuilder)表示。这会生成 IntegrationFlow 组件,该组件应注册为 Spring bean(通过使用 @Bean 注解)。构建器模式用于将任意复杂的结构表示为方法层次结构,这些方法可以接受 Lambda 表达式作为参数。

IntegrationFlowBuilder 仅在 IntegrationFlow bean 中收集集成组件(MessageChannel 实例、AbstractEndpoint 实例等),以便 IntegrationFlowBeanPostProcessor 进一步解析和注册应用程序上下文中的具体 bean。

Java DSL 直接使用 Spring Integration 类,绕过任何 XML 生成和解析。然而,DSL 提供的不只是 XML 之上的语法糖。其最引人注目的功能之一是能够定义内联 Lambda 表达式来实现端点逻辑,从而无需外部类来实现自定义逻辑。在某种意义上,Spring Integration 对 Spring Expression Language (SpEL) 和内联脚本的支持解决了这个问题,但 Lambda 表达式更简单且功能更强大。

以下示例展示了如何使用 Spring Integration 的 Java 配置

@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 配置。

© . This site is unofficial and not affiliated with VMware.