此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Integration 6.4.0! |
Java DSL
Spring 集成 Java 配置和 DSL 提供了一组方便的构建器和一个 Fluent API,允许您从 Spring 类配置 Spring 集成消息流。@Configuration
(另请参阅 Kotlin DSL。
(另请参见 Groovy DSL。
用于 Spring Integration 的 Java DSL 本质上是 Spring Integration 的门面。
DSL 提供了一种简单的方法,通过将 Fluent 模式与 Spring Framework 和 Spring Integration 中的现有 Java 配置结合使用,将 Spring Integration 消息流嵌入到您的应用程序中。
我们还使用并支持 lambda(在 Java 8 中提供)来进一步简化 Java 配置。Builder
这家咖啡馆提供了使用 DSL 的一个很好的例子。
DSL 由 Fluent API 提供(请参阅 )。
这将生成组件,该组件应注册为 Spring bean(通过使用 Comments)。
构建器模式用于将任意复杂的结构表示为可以接受 lambda 作为参数的方法层次结构。IntegrationFlow
IntegrationFlowBuilder
IntegrationFlow
@Bean
唯一在 bean 中收集集成组件(实例、实例等),以便通过 .IntegrationFlowBuilder
MessageChannel
AbstractEndpoint
IntegrationFlow
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();
}
}
前面的配置示例的结果是,它在启动后创建 Spring 集成端点和消息通道。
Java 配置可用于替换和增强 XML 配置。
您无需替换所有现有的 XML 配置即可使用 Java 配置。ApplicationContext