领先一步
VMware 提供培训和认证,以加速您的进步。
了解更多新年快乐,Spring 社区!
希望你们度过了一个愉快的假期,并准备好迎接我们面前的新兴奋。
在圣诞假期休息和充电后,我决定向我最喜欢的语言——Groovy——致敬。
现在,我很高兴向你们介绍一个全新的 Spring 集成 Groovy DSL。你们可能听说过我们之前的尝试,它是在 Spring 集成 XML 支持之上创建一个 Groovy DSL。但是这个解决方案非常繁琐(特别是对于协议特定的通道适配器),并且支持负担也大大增加。我的最新实现完全基于已经成熟的 Java DSL 及其构建器模式支持。
拥有十年 Gradle 经验,我认为为我快速准备一些东西应该很容易,它只是扩展了IntegrationFlowDefinition
并公开了用于定义的 Groovy 构建器样式。事实证明,仅仅使用一种语言和在它之上设计 DSL 是不同的任务,我不得不从头开始学习相关的 Groovy 方面。Vladimír Oraný 的一系列博客文章给了我一个很好的信息来源,说明应该使用什么以及如何使用它才能使 Groovy DSL 的最终用户体验尽可能好。
包括现有Spring 集成 Kotlin DSL的当前成功,到目前为止,我已经编写了几个 Groovy 类。IntegrationGroovyDsl
作为static integrationFlow()
方法的工厂,导入到目标项目中,并委托给众所周知的IntegrationFlows.from()
工厂。GroovyIntegrationFlowDefinition
作为IntegrationFlowDefinition
委托的包装器。这两个类都大量利用了 Groovy 的一等公民——groovy.lang.Closure
,以及@DelegatesTo
和@ClosureParams
特性来支持 IDE 建议和自动完成。
因此,您只需要一个org.springframework.integration:spring-integration-groovy-dsl:0.0.1
依赖项,添加一个import static org.springframework.integration.dsl.IntegrationGroovyDsl.integrationFlow
并开始以简洁的 Groovy 风格编写您的IntegrationFlow
bean。这就是它在我 IntelliJ IDEA 中目前的样子。
注意
在学习了@DelegatesTo
和@ClosureParams
之后,我意识到 Kotlin 也提供了一个很好的特性来改善 IDE 体验。因此,下一个 Spring 集成5.5.8
版本(预计在一月中旬发布)也包含一个@IntegrationDsl
标记注解。
您可以在项目README和相应的Spock 测试中找到更多示例。如果项目成熟,最终它可能会直接进入spring-integration-core
。我们也可以将这些IntegrationGroovyDsl
和GroovyIntegrationFlowDefinition
Groovy 类重写为 Java(它只是一个 DSL API!),但是我相信@CompileStatic
Groovy 特性足以最终优化编译后的字节码。
试一试,欢迎任何反馈!
此致,
Artem