Spring Integration Scala DSL 简介

工程 | Oleg Zhurakousky | 2012年3月5日 | ...

介绍

Spring Integration 团队很高兴地宣布 Spring Integration Scala DSL 的第一个里程碑版本 (1.0.0.M1) 发布 - 这是 Spring Integration 产品组合中最新的补充之一。
什么是 Spring Integration Scala DSL?

Spring Integration Scala DSL 是一种使用 Scala 编写的领域特定语言,其目标是

    • 为 Spring Integration 提供一种强类型的 XML 配置替代方案
    • 提高 Scala 社区对 Spring Integration 的认识
    • 提供与各种 Scala 框架和产品(如 Akka)的一流集成
    • 提供与 Java 的无缝集成,Scala 开发人员仍然可以利用他们现有的 Java 投资

我们要指出的一点是,Spring Integration Scala DSL 本身不是一个新的 EIP 框架。 相反,它是一个基于 Scala 的 DSL,位于基于 Java 的 Spring Integration 框架之上,并且在第一个里程碑中,DSL 本身仍然严重依赖于来自 Spring Integration API 的 Java 类型。 但是,随着后续里程碑的进展,DSL 将逐步发展为越来越Scala 化。 我们相信与现有 java API 的这种紧密集成提供了即时可重用性,但我们也认识到未来在这些类型上提供 Scala 包装器和转换器的好处。

给我看看

这是 DSL 本身的一瞥
val messageFlow =
     filter{payload: String => payload == "World"} -->
     transform{ payload: String => "Hello " + payload} -->
     handle{ payload: String => println(payload) }
    
messageFlow.send("World")

就这样!

将其与 Java/XML 等效项进行比较

XML 配置 (config.xml)

<int:gateway service-interface="foo.bar.MyGateway"
                     default-request-channel="inChannel"/>

<int:filter input-channel="inChannel" 
                expression="payload.equals('World')" 
	        output-channel="transformingChannel"/>
	            
<int:transformer input-channel="transformingChannel" 
                           expression="'Hello ' + payload"
                           output-channel="loggingChannel"/>
                     
<int:service-activator input-channel="loggingChannel" 
              expression="T(java.lang.System).out.println(payload)"/>

Java

public class SpringIntegrationIntro {

    public static void main(String... strings ){
       ApplicationContext context = 
         new ClassPathXmlApplicationContext("config.xml");
       MyGateway gateway = context.getBean(MyGateway.class);
       gateway.send("World");
    }
	
     public static interface MyGateway {
       public void send(String value);
     }
}

您应该注意到的第一件事,也许也是显而易见的是,使用 Scala DSL 连接类似的东西要快得多。 但这并不是唯一的好处。 强大的类型和利用 Scala 等函数式语言的其他功能的能力(例如,使用 Scala 函数作为消息处理器)只是其中的几个例子。 您可以从项目的 GitHub 网站 获取更多信息和详细信息,该网站包含一个全面的 简介 以及 入门指南DSL 参考等。

屏幕录像

为了帮助您,我们还发布了 2 个屏幕录像。

第一个屏幕录像是一个简短的(约 15 分钟)Spring Integration Scala DSL 介绍,其中还涵盖了该项目背后的想法和动机 - [Intro-SI-Scala.mov]

另一个屏幕录像(约 10 分钟)是 如何开始使用 Spring Integration Scala DSL 的视觉补充,其中包括演示如何开始使用基于 Eclipse 的开发环境以及 IntelliJ IDEA。 - [Getting-Started-SI-Scala.mov]

路线图

初始项目路线图可在此处找到:here

反馈

请使用 Spring Integration 论坛Spring Integration Scala DSL JIRA 告知我们您的想法,或在此处发布您的评论。

获取 Spring 新闻简报

通过 Spring 新闻简报保持联系

订阅

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获取支持

Tanzu Spring 在一个简单的订阅中提供对 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部