Java DSL
Spring 集成 Java 配置和 DSL 提供了一组方便的构建器和一个流畅的 API,允许您配置来自 Spring 的 Spring 集成消息流@Configuration
类。
(另请参阅 Kotlin DSL。
(另请参见 Groovy DSL。
用于 Spring Integration 的 Java DSL 本质上是 Spring Integration 的门面。
DSL 提供了一种简单的方法,通过使用 Fluent 将 Spring 集成消息流嵌入到你的应用程序中Builder
模式与 Spring Framework 和 Spring Integration 中的现有 Java 配置一起运行。
我们还使用并支持 lambda(在 Java 8 中提供)来进一步简化 Java 配置。
这家咖啡馆提供了使用 DSL 的一个很好的例子。
DSL 由IntegrationFlow
Fluent API(请参阅IntegrationFlowBuilder
).
这将生成IntegrationFlow
组件,该组件应注册为 Spring Bean(通过使用@Bean
注释)。
构建器模式用于将任意复杂的结构表示为可以接受 lambda 作为参数的方法层次结构。
这IntegrationFlowBuilder
仅收集集成组件 (MessageChannel
实例AbstractEndpoint
实例,依此类推),在IntegrationFlow
bean 在应用程序上下文中进一步解析和注册具体 bean 的IntegrationFlowBeanPostProcessor
.
Java DSL 直接使用 Spring 集成类,并绕过任何 XML 生成和解析。 然而,DSL 在 XML 之上提供的不仅仅是语法糖。 它最引人注目的功能之一是能够定义内联 lambda 来实现终端节点逻辑,无需外部类来实现自定义逻辑。 从某种意义上说,Spring 集成对 Spring 表达式语言 (SpEL) 和内联脚本的支持解决了这个问题,但 lambda 更简单、功能更强大。
下面的示例展示了如何使用 Java 配置进行 Spring 集成:
@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 集成端点和消息通道。
Java 配置可用于替换和增强 XML 配置。
您无需替换所有现有的 XML 配置即可使用 Java 配置。