Spring 3.0: Expression Language
Dieses neue Feature in Spring 3.0 ist Augrund des JIRA-Issue
SPR-4 vom 5.12.2003 entstanden - man sieht also, ein JIRA-Issue wird nicht vergessen, aber manchmal dauert es ein wenig, bis er implementiert wird.
JSP hat schon frühzeitig eine Expression Language (EL) etabliert. Im wesentlichen geht es bei einer EL darum, dass man Ausdrücke zur Laufzeit auswerten lässt. Dadurch kann man die Anwendung flexibel halten, ohne dass man alles in Programm-Code schreiben muss.
Für Spring kann man zum Beispiel folgenden Code schreiben:
@Component
public class KlasseOhneNamen {
@Autowired
public void setCacheSize(@Value("#{systemProperties.cacheSize}") int cacheSize) {
this.cacheSize = cacheSize;
}
...
}
Wie man sieht, ist hier eine set-Methode mit @Autowired annotiert. Sie wird also von Spring automatisch aufgerufen. Mit der @Value-Annotation kann man nun einen EL-Ausdruck an ein Parameter binden. Im Beispiel wird ein Werte aus den System-Properties ausgelesen. Diesen kann man z.B. mit
-D der Java-Runtime übergeben. Alternativ kann man auch einfache Berechnungen auswerten lassen oder auf die Werte anderer Spring-Beans zugreifen.
Man sieht in diesem Beispiel auch, dass es mit Hilfe der Spring EL auch sehr einfach möglich ist, eine Spring-Bean mit Annotationen zu konfigurieren und dennoch bestimmte Einstellungen so flexibel zu halten, dass man sie von außen konfigurieren kann. Natürlich kann man EL auch in der XML-Konfiguration nutzen. Gegenüber der Nutzung des
PropertyPlaceholderConfigurer ist die Nutzung von EL in diesem Fall einfacher und eleganter.
Die Darstellung hier bezieht sich übrigens wieder auf
Spring 3.0M1.