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