Spring 3 steht vor der Tür - ein erster Ausblick

Seite 4: Expression Language

Inhaltsverzeichnis

Eine weitere Neuerung von Spring 3 ist eine Expression Language (EL). Ähnliche Ansätze sind unter anderem in der Web-Entwicklung weit verbreitet. Mit einer Expression Language nutzt man Ausdrücke, die zur Laufzeit ausgewertet werden. So lassen sich dynamische Elemente des Systems implementieren, ohne dazu komplexe Techniken wie eine Programmiersprache nutzen zu müssen.

Die Einführung einer Expression Language ergibt sich aus den Anforderungen anderer Projekte wie Spring Web Flow, sie bietet aber auch einen wesentlichen Vorteil beim Schreiben von Spring-Konfigurationen. Bisher war man darauf beschränkt, feste Werte zu verwenden. Erfahrungen mit einem ähnlichen Ansatz bei Spring for .Net haben gezeigt, dass eine Expression Language signifikante Vorteile mit sich bringt.

Die Nutzung von EL-Ausdrücken ist sowohl in der XML-Konfiguration als auch mit Annotationen zu realisieren. Das folgende Listing zeigt ein Beispiel.

@Component
public class CountryAwareLogic {

...
@Autowired
public void setCountry(
@Value("#{systemProperties.country}") String country) {
this.country=country;
}

}

Durch die @Component-Annotation instanziiert man die Klasse automatisch als Spring-Bean. Der Spring-Container ruft die Methode setCountry() wegen der @Autowired-Annotation automatisch auf. @Value kann nun einen Wert als Parameter injizieren. Im konkreten Beispiel ist das eine Java-System-Property, wie man sie der Java Virtual Machine (JVM) mit -D übergeben kann. An dieser Stelle ist auch der Zugriff auf andere Variablen wie die Spring-Beans möglich, und es werden unterschiedliche Ausdrücke, zum Beispiel arithmetischer Art, unterstützt.

Das Beispiel zeigt Vorteile, die sich aus der Nutzung mit Spring EL ergeben: Der Zugriff auf beispielsweise System-Properties ist wesentlich vereinfacht und Teil eines allgemeinen Konzepts, in das auch andere Quellen für Variablen eingebaut werden können. Die Konfiguration durch Annotationen ist flexibler und in der Praxis besser anwendbar, weil man nun auch Werte konfigurierbar gestalten kann – eben beispielsweise durch System-Properties. Zuvor waren mit Annotationen nur Spring-Beans und ihre Beziehungen zu konfigurieren, aber keine primitiven Werte.

Springs Konfigurationsmöglichkeiten ergänzen und erweitern die Einführung der Expression Language durch diese Eigenschaften sinnvoll.