Scala-DSL für Spring auf dem Weg

Hartmut Schlosser

Eine in Scala geschriebene domänenspezifische Sprache (DSL) ist auf dem Weg, um die Spring-Programmierung mit Scala zu erleichtern. Die Spring Integration Scala DSL steht im ersten Meilenstein-Release 1.0.0 bereit. Die DSL setzt auf das Java-basierte Spring-Integration-Framework auf und verfolgt folgende Ziele:

  • eine stark-typisierte Alternative zur XML-Konfiguration für Spring Integration bereitzustellen
  • Integrationen für verschiedene Scala-Frameworks wie Akka herzustellen
  • das Spring-Integration-Projekt in der Scala-Community bekannt zu machen

Auf dem SpringSource-Blog gibt es das folgende DSL-Beispiel zu sehen:

val messageFlow =
     filter.using{payload: String => payload == "World"} -->
     transform.using { payload: String => "Hello " + payload} -->
     handle.using { payload: String => println(payload) }
 
messageFlow.send("World")  

Im Vergleich dazu das Java/XML-Äquivalent:

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);
     }
}  

In der vorliegenden M1-Version wird noch stark auf die Java-Typen des Spring Integration APIs zurückgegriffen. Die DSL soll in zukünftigen Versionen aber zunehmend eine Scala-typische Gestalt annehmen.

Zum Projekt hat SpringSource auch zwei Screencasts angefertigt:

Nach dem ersten Meilenstein wartet das Team gespannt auf Community-Feedback, um den zweiten Schritt gehen zu können: das M2-Release, dessen Verfügbarkeit für Ende März vorgesehen ist. Neben der Stabilisierung der DSL soll es um den Ausbau des Supports für Spring Integration Adapter wie FTP/SFTP, MAIL und AMQP gehen. Zudem soll es erste Möglichkeiten geben, die Spring Integration Scala DSL mit Java zusammenarbeiten zu lassen. Im dritten Meilenstein steht am 31. Mai die Integration des Akka-Frameworks an.

Geschrieben von
Hartmut Schlosser
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.