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-esque。 我們確實相信與現有 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 個螢幕截圖。

第一個螢幕截圖是 Spring Integration Scala DSL 的簡短(約 15 分鐘)介紹,其中還涵蓋了專案背後的想法和動機 - [Intro-SI-Scala.mov]

另一個螢幕截圖(約 10 分鐘)是 如何開始 使用 Spring Integration Scala DSL 的視覺補充,其中包括關於如何開始使用基於 Eclipse 的開發環境以及 IntelliJ IDEA 的演示。 - [Getting-Started-SI-Scala.mov]

藍圖

初始專案藍圖可在此處找到 這裡

意見反應

請透過 Spring Integration 論壇Spring Integration Scala DSL JIRA 或在此處發表您的評論,讓我們知道您的想法。

取得 Spring 電子報

隨時關注 Spring 電子報

訂閱

領先一步

VMware 提供培訓和認證,以加速您的進度。

瞭解更多

獲得支援

Tanzu Spring 在一個簡單的訂閱中提供對 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位檔。

瞭解更多

即將舉行的活動

查看 Spring 社群中所有即將舉行的活動。

查看全部