领先一步
VMware 提供培训和认证,以加速你的进步。
了解更多什么是 Spring 集成 Scala DSL?
**Spring 集成 Scala DSL** 是一种用 Scala 编写的领域特定语言,其目标是:
我们要指出的是,Spring 集成 Scala DSL 本身并不是一个新的 EIP 框架。相反,它是一个基于 Scala 的 DSL,位于基于 Java 的 Spring 集成框架 之上,并且在第一个里程碑版本中,DSL 本身仍然严重依赖于来自 Spring 集成 API 的 Java 类型。但是,随着它在后续里程碑中的发展,DSL 将逐渐变得越来越“Scala 风格”。我们相信,与现有 Java API 的这种紧密集成提供了即时可重用性,但我们也认识到将来为这些类型提供 Scala 包装器和转换器的益处。
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]