Frühling für Programmierer
Ich stand einmal wieder vor dem Problem, dass jedem Programmierer wohl häufiger in seinem Leben begegnet:
Eine alte Applikation sollte neu implementiert werden, diesmal aber natürlich schön modular und übersichtlich.
Die Lösung: Nur mit Interfaces arbeiten und die konkreten Implementierung über eine Registry lokalisieren.
Eine entsprechende Registry-Klasse war schnell geschrieben, aber nun stand ich vor dem nächsten Problem:
Bestimmte Aktionen auf die Objekte sollten nur von Benutzern mit entsprechenden Rechten durchgeführt werden, wo sollte also der entsprechende Code, der die Authorisation überprüft hin?
Ihn ins Frontend zu schreiben erscheint kaum sinnvoll, wenn man berücksichtigt, dass dann bei einer Änderung des Frontends möglicherweise eine Überprüfung vergessen würde. In die Business-Logik sollte er aber nicht, denn da gehört er schließlich eigentlich nicht hin und macht die Sache unübersichtlich.
Da fiel mir ein, dass ich vor längerer Zeit mal auf ein Projekt names Avalon gestoßen war. Dieses heißt inzwischen Excalibur, leistet aber im wesentlichen das gleiche wie früher.
Ein Container unterstützt einem beim Bereitstellen von Komponenten, die "Verdrahtung" wird dabei im wesentlichen über Komponenten abgewickelt. Die Sicherheitsproblematik war damit aber - zumindest auf den ersten Blick - noch nicht befriedigend gelöst.
Um mich mit dem Framework näher auseinanderzusetzen suchte ich also entsprechende Literatur und stieß dabei auf eine Seite, auf der über unterschiedliche Frameworks diskutiert wurde. Dort wurde Spring als deutlich benutzerfreundlicher im Vergleich zu Avalon dargestellt.
Nachdem ich mir Spring nun näher angesehen habe, bin ich zu dem Schluss gekommen, dass Spring das nahezu perfekte Framework für fast alle Zwecke ist.
Die wichtigsten Vorteile gegenüber den meisten anderen Frameworks sind für mich:
- Einfache Verwendung: Was man nicht braucht muss man auch nicht konfigurieren. Man konfiguriert immer nur genau die Features, die man auch verwendet.
- Gute Anpassbarkeit: Alle Komponenten des Frameworks lassen sich ableiten und somit durch an die speziellen Bedürfnisse angepasste ersetzen.
- Integriertes AOP: Spring enthält eine AOP-Implementierung, die rein deklarativ funktioniert und somit ohne speziellen Compiler auskommt - trotzdem kann sie praktisch alles, was man von anderen Implementierungen, wie z.B. AspectJ, gewohnt ist.
- Eigene Komponenten müssen keine speziellen Interfaces implementieren oder von bestimmten Klassen abgeleitet sein. Dadurch bleibt der Business-Code vom Framework unabhängig.
Diese Features machen aus meiner Sicht Spring zum am weitesten entwickelten und entwicklerfreundlichsten Framework im J2EE-Umfeld, das derzeit auf dem Markt existiert.
Ich kann jedem Java-Entwickler nur empfehlen, es sich einmal anzuschauen, es kann eine Menge Zeit sparen und Nerven schonen.