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, (Object-Relational Mapping), 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, den Plain Old Java Objects (POJO) ,implementiert werden.
Spring Context Modul Erweitert das Konzept der BeanFactory um Life-Cycle Ereignisse, Validierung, EJB-Integration, Remoting und Scheduling. Die BeanFactory realisiert den Container und das Context Modul setzt den Framework-spezifischen Teil um.
Spring AOP Modul Unterstützt die aspektorientierte Programmierung (AOP) von eigenen Aspekten für Spring-basierte Applikationen. Auch ist die Metadaten-Programmierung in Spring dadurch möglich. Um die Interoperabilität mit anderen AOP-Frameworks umzusetzen, orientiert sich die Spring AOP-Realisierung weitestgehend an der von der AOP Alliance definierten Schnittstelle.
Spring DAO Modul Das Modul abstrahiert die Java Database Connectivity (JDBC) Schnittstellen, so dass der eigentliche technische Code um beispielsweise Datenverbindungen aufzubauen, Statements, Ergebnisse oder Fehler zu behandeln, in die Klassen des Frameworks verlagert wird. Somit kann sich der Applikations-Code rein auf die Anwendung ausrichten. Um Transaktions-Management-Dienste für die Objekte einer Spring Applikation anbieten zu können, nutzt das DAO-Modul wiederum die Möglichkeiten des AOP-Moduls.
Spring ORM Modul ORM steht dabei für objektrelationales Mapping - damit ist die Abbildung von Objekten auf relationale Datenbanken gemeint. Mit diesem Modul integriert Spring populäre ORM-Frameworks wie Hibernate, TopLink, JDO und iBATIS SQL Maps. Die Dienste des Transaktions-Managements sind aber auch in diesem Modul verfügbar.
Spring Web Modul Stellt einen Context für die Realisierung von Web-basierten Applikationen zur Verfügung. Weiterhin integriert dieses Modul das Framework Struts.
Spring Web MVC Modul Enthält ein vollständiges MVC-Framework für die Realisierung von Web-Applikationen und tritt damit in Wettbewerb zu anderen Web Application Frameworks. Der Unterschied ist jedoch, das Spring mit Model View Controller (MVC) bei gleichzeitiger Nutzung des Inversion of Control (IoC) Vorteile hinsichtlich der Flexibilität und Entkopplung von Komponenten gegenüber anderen Frameworks wie zum Beispiel Struts hat.
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.