Spring 集成 Scala DSL 简介

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

介绍

Spring 集成团队很高兴地宣布 **Spring 集成 Scala DSL** 的第一个里程碑版本 (1.0.0.M1) 发布——这是 Spring 集成 产品组合的最新成员之一。
什么是 Spring 集成 Scala DSL?

**Spring 集成 Scala DSL** 是一种用 Scala 编写的领域特定语言,其目标是:

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

我们要指出的是,Spring 集成 Scala DSL 本身并不是一个新的 EIP 框架。相反,它是一个基于 Scala 的 DSL,位于基于 Java 的 Spring 集成框架 之上,并且在第一个里程碑版本中,DSL 本身仍然严重依赖于来自 Spring 集成 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 参考 等。

屏幕录制

为了帮助你,我们还发布了两个屏幕录制。

第一个屏幕录制是对 Spring 集成 Scala DSL 的简短 (~15 分钟) 介绍,它还涵盖了该项目背后的理念和动机 - [Intro-SI-Scala.mov]

另一个屏幕录制 (~10 分钟) 是 Spring 集成 Scala DSL 入门方法 的视觉补充,其中包括如何使用基于 **Eclipse** 的开发环境以及 **IntelliJ IDEA** 入门的演示 - [Getting-Started-SI-Scala.mov]

路线图

最初的项目路线图 在此处 提供

反馈

请使用 Spring 集成论坛Spring 集成 Scala DSL JIRA 或者在此处发表评论,让我们知道你的想法。

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

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

了解更多

获取支持

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

了解更多

即将举行的活动

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

查看全部