Spring Expert Day München
Am 10. März machen wir in München im M,O,C, den Spring Expert Day.
Zu den Themen gehört:
- Spring 3.0 (Jürgen Höller, VP & Distinguished Engineer, Spring Framework Project Lead)
- SpringSource dm Server – Der OSGi-Application-Server der nächsten Generation (Eberhard Wolff, Regional Director und Principal Consultant
- Web-Anwendungen und mehr mit Spring (Agim Emruli, Senior Consultant SpringSource)
- Spring Security (Mike Wiesner, Senior Consulant SpringSource)
- Entwicklungswerkzeuge für Spring und OSGi (Christian Dupuis, Senior Software Engineer, Spring IDE & SpringSource Tool Suite Lead)
- Management von Spring-Anwendungen mit SpringSource AMS (Agim Emruli, Senior Consultant SpringSource)
...und zum Abschluß kann man dann noch mit den Vortragenden diskutieren.
Für den Tag erheben wir einen Unkostenbeitrag von 90€ inkl. Mittagessen. Registrierung bitte unter
http://springmuenchen.eventbrite.com/ .
Bis zum 10.3. in München!
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.
Tomcat Expert Seminar in München
Am 19.1. kommt das Tomcat Expert Seminar nach München. Tomcat Committer Filip Hanik spricht über große Tomcat Deployments, Performance Optimierungen und veschiedene andere spannende Themen. Die Teilnahme kostet 60€. Anmelden kann man sich auf unserer
Website.
REST mit Spring 3
Spring 3 wird mit vielen neuen Features aufwarten.
REST (Representational State Transfer) ist ein Bereich, bei dem man in der jetzigen Entwicklungssstand bereits einiges zu sehen ist.
Vorab: Spring 3.0 wird Java 5 voraussetzen, da JDK 1.4 mittlerweile das Ende seines Lebenszyklus erreicht hat. Außerdem werden die alten Spring-MVC-Controller (SimpleFormController, MultiActionController) deprecated, da mit @Controller und @RequestMapping in Spring 2.5 ein deutlich eleganterer Weg vorgestellt wurde.
Dadurch ergibt sich, dass auch der REST-Support mit Annotationen funktionieren sollte. Hier ein Beispiel:
@RequestMapping(value = "/kunden/{id}",
method = { RequestMethod.GET })
public ModelAndView getById(@PathVariable("id") int id) {
Kunde kunde = kundeDAO.getByID(id);
return new ModelAndView("kunde", "kunde", kunde);
}
Die grundlegende Idee von REST ist, dass man eine URL wie http://server/kunden/42 hat, an die man dann Anfragen stellen kann wie zum Beispiel ein HTTP GET um die Daten des Kunden zu holen oder ein HTTP DELETE zum Löschen. Wie man sieht, kann man für diese Funktionalität in Spring 3.0 nun in @RequestMapping ein URI-Template angeben. Dort sind bestimmte Stellen angegeben, die an Variablen gebunden werden können. Im Beispiel also {id}. Der Wert kann dann an einen Paramter der Methode mit der @PathVariable-Annotation gebunden werden.
Die unterschiedlichen HTTP-Aktionen wie GET, POST, DELETE usw. werden – wie im Listing gezeigt – ebenfalls unterstützt. Weitere (zukünftige) Themen im REST-Support sind:
- Die Unterstützung von XML, JSON usw., um Daten zu übertragen. Die Nutzung von HTML ist jetzt schon möglich.
- Unterstützung für ETags, um die Datenübertragung für Daten, die sich nicht geändert haben, zu eliminieren.
- Atom und RSS als Views.
Wen die Details interessieren: In Spring 3.0M1 (auf das sich dieses Posting bezieht) ist das Petclinic-Beispiel bereits vollständig zu REST konvertiert. Das bietet schon einen guten Eindruck, was man mit REST und Spring alles machen kann.