Spring ist ein umfangreiches Framework für die Entwicklung von Applikationen auf Basis der Programmiersprache Java. Insbesondere im Zusammenhang mit der J2EE-Plattform ist Spring ein Standard Framework, das als Open Source für alle möglichen Ausprägungen von Java-Applikationen zur Verfügung steht. Hintergrund der Entwicklung von Spring war es, eine leichtgewichtige (lightweight framework) Alternative zu den oft komplexen J2EE-Architekturen zu realisieren. Dazu basiert Spring auf einem POJO-orientieren Programmiermodell. Komplexere Architekturen sind bei Verwendung von Spring einfacher testbar, und der Quellcode ist leichter zu pflegen, so dass Spring einen nachhaltigen Einfluss auf das Design einer Anwendung hat. Spring setzt im Kern das Konzept Dependency Injection (DI) um und berücksichtigt weiterhin die Mechanismen der aspektorientierten Programmierung (AOP).
Die Strukturen von Spring sehen die integrative Verwendung von anderen Frameworks und Standards wie Enterprise JavaBeans (EJB) oder Hibernate vor - Spring ist ein Meta-Framework und kann durch seine Unabhängigkeit von einer bestimmten Plattform in die unterschiedlichsten Architekturen eingebunden werden. So wird Spring in vielen Applikationsservern wie Tomcat, Jetty, JBoss, Glasfisch u.a. oder auch in eigener Umgebung standalone eingesetzt. Dafür definiert Spring auch entsprechende Mechanismen zur Sicherheit. Verteilte Anwendungen sowie verteilte Transaktionen sind ebenso möglich da mit dem Einsatz von Spring eine hohe Ausfallsicherheit und eine entsprechende Skalierbarkeit garantiert sind. Unter den u.g. Links steht sowohl das Spring Framework zum Download bereit sowie eine Reihe weiterer Informationen zu Spring.
Die Historie von Spring
Kurz zur Geschichte von Spring: Begonnen hat es mit einem Framework mit Namen interface21, das von Rod Johnson in seinem Buch "Expert One-on-One J2EE Design and Development" publiziert wurde, und für die Unterstützung seiner eigenen Applikationen gedacht war. Daraus ist aufgrund der hohen Resonanz im Februar 2003 das Open-Source-Projekt Spring entstanden. Das Projekt wird bei Sourceforge gehostet und beschäftigt aktuell eine Reihe von Entwicklern mit der Weiterentwicklung und dem Support von Spring. Die aktuelle Version des Frameworks gibt es unter dem u.g. Link. Darunter lassen sich auch weitere Projekte finden, die sich im Umfeld von Spring entwickelt haben. Insbesondere ist zum Beispiel auch eine auf die .NET-Plattform portierte Version verfügbar. Hier nachfolgend ein kurzer Überblick über weitere Projekte:- Spring Webs Service zur Realisierung von Web-Services.
- Spring Security zur Realisierung von Sicherheits-Aspekten in Java- und Web-Anwendungen.
- Spring LDAP zur Realisierung von Zugriffen auf LDAP-Systeme.
- Spring Rich Client zur Realisierung von Rich Client-Anwendungen auf Basis von Spring.
- Spring Modules mit einer Zusammenfassung von Tools und Erweiterung für Spring.
Das Framework von Spring
Spring wird typischerweise als sogenanntes Lightweight Framework für das Erstellen von Java Applikationen beschrieben. Darüber hinaus muss jedoch hinzugefügt werden:Das Spring-Framework kann für alle Arten von denkbaren Java-Applikationen genutzt werden.
Es ist beispielsweise nicht nur wie das Framework Struts von Apache auf Web-Applikationen limitiert. Die Abbildung zeigt beispielhaft die Architektur einer typischen Spring-basierten Web-Anwendung.- Leichtgewichtig bedeutet in diesem Zusammenhang, das man nur minimalste Anpassungen am existierenden Quellcode vornehmen muss, um Spring vorteilhaft verwenden zu können.
Bei Einsatz des Frameworks Spring können sich die folgenden Architekturvorteile ergeben:
- Applikationen können ohne weiteren Aufwand Unit-Tests unterzogen werden.
- Spring bietet ein konsistentes Framework für den Zugriff auf Daten an. Dazu können Java Database Connection (JDBC) oder aber ORM-Produkte wie Hibernate, Toplink oder Java Data Objects (JDO) eingesetzt werden.
- Spring ist eine Alternative zu Enterprise JavaBeans (EJB) und verwendet Mechanismen der aspektorientierten Programmierung und bietet so ein deklaratives Transaktions-Management unter Verzicht auf einen EJB-Container an.
- Spring bietet dem Entwickler einen definierten Rahmen auf allen Ebenen für seine Entwicklung an.
- Business-Interfaces können als einfache Java-Klassen (POJOs, Plain Old Java Object) implementiert werden.
Die Abbildung zeigt die Anordnung und Verteilung der Funktionalitäten und Features von Spring auf sieben verschiedene Module. Damit sind alle Funktionen zur Entwicklung von unternehmensweiten Applikationen abgedeckt. Dabei muss aber eine Applikation nicht komplett auf dem Spring-Framework basieren. Der Entwickler ist frei in der Wahl der Module und kann diejenigen wählen, die in seiner spezifischen Umgebung den meisten Nutzen bringen. Wie aus der Abbildung ersichtlich, ist das zentrale Modul der Spring Core - dieser stellt einen Container mit den grundlegenden Funktionen bereit. Dabei spricht man bei Spring von Beans und meint damit alle von Spring verwalteten Ressourcen. Zentrales Element jeder Spring-Applikation ist die BeanFactory - eine Implementierung des Entwurfsmusters (Pattern) Factory. Diese verwendet zur Trennung der Applikations-Konfiguration von der Spezifikation der Code-Abhängigkeiten das Prinzip Inversion of Control (IoC).
Das Spring-Framework ist in der Praxis häufig Teil der Entwicklung einer Applikation, weil es diesen großen Umfang von Funktionalität bereitstellt. Darüber hinaus werden insbesondere die Integration von Persistenz-Technologien und ein deklaratives Transaktions-Management unterstützt, so dass Spring auch für Datenbank-Applikationen Verwendung findet.
http://www.springframework.org
http://www.springframework.net/
http://www.springframework.org/documentation
http://www.springsource.org/osgi
http://www.springsource.org/