Spring-Glossar
Unser Spring-Glossar erklärt die vielen Fachbegriffe wie beispielsweise Inversion of Control, Dependency Injection etc., die durch alle möglichen eZines und Printmedien geistern.
Wenn Sie Begriffe vermissen, die Ihrer Meinung nach erklärt gehören oder falls Sie Fragen haben, mailen Sie uns doch einfach unter
Index
A·B·C·D·E·F·G·H·I·J·K·L·M·N·O·P·Q·R·S·T·U·V·W·X·Y·Z·Alle
| A nach oben | ||
| Annotation-Config | Eine spezielle Konfiguration, die Spring nach Annotationen suchen lässt und Beans darüber konfiguriert. Hierzu muss in einer Konfigurations-Datei die Option “annotation-config” eingeschaltet werden. XML-Beispiel-Konfiguration. Es wird org.example.* durchsucht: <beans ... xmlns:ct="http://www.springframework.org/schema/context" ...> <ct:annotation-config/> <ct:component-scan base-package="org.example"/> ... </beans> Das Beispiel veranlasst Spring beim Start alle Klassen in org.example nach Annotationen abzusuchen. Ein Beispiel, um eine Komponente mittels Annotation zu registrieren:
@Service("example")
public class Example {
...
| |
| ApplicationContext | Der ApplicationContext ist eine Obermenge der BeanFactory. Während eine BeanFactory Spring-Beans instanziiert und konfiguriert, bietet der ApplicationContext zusätzlich die Unterstützung von Spring-AOP, Message-Resource-Handling (Internationalisierung) und Event-Verarbeitung an. Ferner lassen sich über den ApplicationContext relativ einfach applikationsschichtspezifische Kontexte integrieren.
Daher ist es empfehlenswert, den ApplikationsContext der BeanFactory vorzuziehen.
public class ClassPathXmlApplicationContextExample {
public static main(String[] args) {
ClassPathXmlApplicationContext applicationContext =
new ClassPathXmlApplicationContext(
"beanDefinitions.xml");
BundesligaManager blManager =
applicationContext.getBean("bundesligaManager",
BundesligaManager.class);
List<Team> teams = blManager.listTeams();
}
}
| |
| AspectJ | Es handelt sich um eine Erweiterung von Java, die es ermöglicht “Aspekte” dem Programm hinzuzufügen (Siehe auch AOP). Solche Aspekte können in einer eigenen Scriptsprache oder mittels Annotationen am Java-Code definiert und mittels speziellem Compiler übersetzt werden. Spring benutzt AspectJ u.a. für die Transaktions-Verwaltung und schnellere Interceptoren. | |
| Aspektorientierte Programmierung | Im Spring-Framework spielt die aspektorientierte Programmierung (AOP) eine große Rolle. Es bietet die Möglichkeit sogenannte “Aspekte” unabhängig von der Geschäftslogik zu entwickeln und auf Methoden anzuwenden. Beispiele für Aspekte:
| |
| Autowiring | Unter Autowiring versteht man das automatische Verdrahten von SpringBeans. Gibt man die @Autowired-Annotation an, versucht Spring eine passende Bean zu finden und injiziert diese. Anmerkung: Da dieses Feature viele Vorteile von Spring in Frage stellt, sollte der Einsatz gut überlegt sein. Vielfach wird dieses Feature nur in Unit-Tests eingesetzt. Dort erspart es Konfigurationsaufwand wenn nur eine Instanz der Bean existiert. | |
| B nach oben | ||
| BeanFactory | Die BeanFactory ist der IoC-Container im Spring-Framework.
Sie verwaltet die Komponenten (Spring-Beans) sowie deren Abhängigkeiten und fungiert als Schnittstelle zwischen einer Applikation und dem Spring-IoC-Container.
public class XmlBeanDefinitionReaderExample {
public static main(String[] args) {
DefaultListableBeanFactory beanFactory =
new DefaultListableBeanFactory();
XmlBeanDefinitionReader definitionReader =
new XmlBeanDefinitionReader(beanFactory);
definitionReader.loadBeanDefinitions(
new ClassPathResource("beanDefinitions.xml"));
BundesligaManager blManager =
beanFactory.getBean("bundesligaManager",
BundesligaManager.class);
List<Team> teams = blManager.listTeams();
}
}
Anmerkung: In den meisten Anwendungen ist ein ApplicationContext einer BeanFactory vorzuziehen. Dieser erweitert die BeanFactory und stellt noch weitere Funktionalität zu Verfügung. | |
| C nach oben | ||
| Controller | Eine Controller-Komponente fungiert als eine Art Vermittlungszentrale. Sie analysiert Requests, ruft Geschäftsmethoden aus der Service-Schicht der Applikation auf und legt die Ergebnisse in einem Model ab. Im Anschluss übergibt der Controller dieses Model an einen View, der das Ergebnis zur Anzeige bringt. Der Begriff Controller steht für das ‘C’ im Spring-MVC-Framework. | |
| D nach oben | ||
| Dependency Injection | Die “Dependency Injection” (DI) ist eine Anwendung von Inversion of Control und sieht vor, dass Abhängigkeiten vom Framework in die Bean injiziert werden. Hierzu liest Spring die Beziehungen und Abhängigkeiten aus den Konfigurations-Dateien und Annotationen und legt einen Objektgraphen zur Laufzeit an.
Somit übernimmt das Framework die Aufgabe des Erzeugens von Objekten und deren Abhängigkeiten. Dies hat folgende Vorteile:
| |
| DispatcherServlet | Das DispatcherServlet spielt in Spring-MVC eine zentrale Rolle. Es übernimmt die Funktion eines FrontControllers.
Es dient als zentrale Anlaufstelle für einkommende Requests und delegiert diese an eine Klasse, die das Controller-Interface implementiert. Über ein sogenanntes HandlerMapping wird definiert, welche Controller-Klasse für einen spezifischen Request zuständig ist. Der Rückgabewert einer Spring-Controller-Methode ist ein Objekt der ModelAndView Klasse. Dieses Objekt referenziert ein View- und ein Modelobjekt. Ein Modelobjekt implementiert das Map-Interface. Das Viewobjekt implementiert das View-Interface, welches eine render-Methode besitzt, die den darzustellenden Inhalt generiert. | |
| E nach oben |
| F nach oben |
| G nach oben |
| H nach oben | ||
| HandlerMappings | Ein HandlerMapping kann für Spring-MVC definiert werden und bestimmt, welcher Controller für einen bestimmten Request aufgerufen wird.
In Spring wird mit Hilfe von HandlerMappings die URL eines Requests auf eine Ausführungskette für die Requestabarbeitung gemappt. Die Ausführungskette besteht aus einer Liste von Pre- und Postprozessoren sowie Controller-Objekte. Spring bietet drei verschiedene Implementierungen des HandlerMapping Interface an: BeanNameUrlHandlerMapping: SimpleUrlHandlermapping: ControllerClassNameHandlerMapping: | |
| HandlerInterceptor | Zusätzlich zu einem RequestHandler (Controller) können in Spring-MVC HandlerInterceptor-Klassen definiert werden. Methoden dieser Klassen werden vom Framework vor bzw. nach dem Aufruf einer Controller-Methode ausgeführt.
In jeder HandlerMapping-Definition können ein oder mehrere HandlerInterceptor-Klassen definiert werden. Mit Hilfe von HandlerInterceptor-Klassen sollte Funktionalität implementiert werden, die für alle URLs eines HandlerMappings aufgerufen werden soll. Dies vermeidet redundanten Code in den Controller-Klassen. | |
| I nach oben | ||
| Interceptor | Mittels eines Interceptors kann auf Methodenaufrufe reagieren und vorher und/oder nachher noch eigene Logik ausgeführt werden. Dies ermöglicht es Aspekte (siehe AOP) zu entwickeln. In Spring werden diese Interceptoren mit Java-Proxy oder durch AspectJ realisiert. | |
| Inversion of Control | Inversion of Control (IoC) ist eine allgemeine Eigenschaft von Frameworks, wird gemeinhin gerne mit dem Satz “don’t call us, we’ll call you” umschrieben. Es soll ausdrücken, dass die Verantwortlichkeiten bei der Programmausführung beim Framework liegen und nicht bei den Komponenten, die auf Basis eines Frameworks entwickelt und ausgeführt werden.
Dies bedeutet, dass das Framework von seinen Komponenten verlangt, dass bestimmte Callback-Methoden durch sie implementiert werden. Über diese kann das Framework bzw. der Container zur Laufzeit Informationen in die Komponenten injiziert ober bestimmtes Verhalten (über Methodenaufrufe) auslösen. Bei Spring kommt eine spezialisierte Form von IoC zum Einsatz, auch wenn es im Detail sehr wohl Unterschiede gibt (siehe hierzu auch Dependency Injection). Im Kontext von Spring wird IoC und Dependency Injection vielfach synonym verwendet. | |
| J nach oben |
| K nach oben |
| L nach oben | ||
| Load-Time Weaving | Das Feature “Load-Time Weaving” steht nur mit AspectJ zur Verfügung. Es bietet mit Spring die Möglichkeit der Dependency Injection, obwohl die Bean nicht über eine BeanFactory geladen wurde. Über AspectJ wird z.B. bei der manuellen Instanziierung die Spring-Konfiguration angewendet und eine konfigurierte SpringBean bereit gestellt. Eine Bean muss hierzu mit der @Configurable-Annotation versehen und “annotation-config” in der Konfiguration gesetzt sein. Auch muss beim Start der Anwendung ein spezieller Java-Agent konfiguriert werden. | |
| M nach oben | ||
| MVC | MVC steht für das Model-View-Controller Architektur-Pattern. Das Entwurfsmuster unterteilt ein Software-System in drei verschiedene Bereiche.
Spring implementiert mit dem Spring MVC Framework das MVC Pattern. | |
| N nach oben |
| O nach oben |
| P nach oben |
| Q nach oben |
| R nach oben |
| S nach oben | ||
| Scope | Der Scope einer Spring Bean definiert die Lebensdauer und Anzahl der Instanzen, die vom Spring IoC-Container erzeugt werden. Zusammen mit der BeanDefinition wird der Scope deklarativ festgelegt.
Durch den BeanScope kann beispielsweise festgelegt werden, ob der Spring IoC-Container immer die gleiche Instanz einer SpringBean liefert oder jedemal ein neues SpringBean-Objekt erzeugt, wenn die Applikation über den Container auf eine SpringBean zugreift. Neben der Erzeugung und dem Abräumen von Beans wird somit auch der Gültigkeitsbereich der Objekte deklarativ gesteuert und muss nicht programmiert werden. Spring kennt folgende Scopes:
| |
| Spring AOP | Spring AOP stellt eine abstrakte Möglichkeit zur Verfügung, um Aspekte bzw. Interceptoren über die Spring-Konfiguration zu verwalten. Dies wird z.B. für die Transaktions-Steuerung verwendet. Spring AOP benutzt je nach Verfügbarkeit von anderen Frameworks AspectJ, CGLib oder Java Proxys, um die Aspekte anzuwenden. | |
| Spring Beans | Der Spring IoC-Container verwaltet sogenannte Spring Beans.
Spring Beans sind Geschäftsobjekte/Komponenten, die für eine Applikation benötigt werden. Hierbei handelt es u.a. um:
Die Konfiguration erfolgt in einer XML- oder Property-Datei. Aus Gründen der Lesbarkeit empfiehlt sich die Verwendung von XML. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="..."> <bean id="..." class="..."> <!— Bean Konfiguration --> </bean> <!-- weitere Bean Konfigurationen --> </beans> Eine Bean-Definition definiert u.a. folgende Metadaten:
Die komplette Liste der Metadaten ist in der Spring Dokumentation beschrieben. Anmerkung: Domain-Objekte sollten nicht als Spring Beans definiert werden. Sie werden über DAOs und Geschäftslogik angelegt und benutzt. Dem Spring IoC-Container wird durch Konfigurations-Metadaten mitgeteilt, wie diese Beans zu instanziieren und zu verknüpfen sind. | |
| Spring Roo | Spring Roo ist ein Tool für “rapid application development” und verspricht dem Entwickler diverse Alltagstätigkeiten abzunehmen. Hierzu zählen beispielsweise die Generierung von Entitäten und Tests für die Zugriffsschicht. Das Tool verwendet das Spring-Framework und setzt stark auf AspectJ. | |
| Spring Security | Ist eine Erweiterung von Spring die diverse Mittel für die Prüfung von Authentifizierung und Autorisierung bereitstellt. Es baut u.A. auf Spring AOP auf und fügt Aspekte hinzufügt, die die Berechtigungen an jeder Methode überprüfen können. Folgende Methode kann z.B. nur mit der Rolle “ROLE_ADMIN” aufgerufen werden:
@Secured({"ROLE_ADMIN"})
public void doSomething() {
...
}
| |
| Spring Web MVC | Spring MVC (kurz Spring-MVC) ermöglicht das Erstellen von Applikationen nach dem MVC (Model-View-Controller) Pattern. Es eignet sich insbesondere zur Erstellung web-basierter Anwendungen.
Das Model repräsentiert die Daten, die einem Benutzer angezeigt werden sollen. Hierbei handelt es sich in den meisten Fällen um JavaBeans, die in einer Map abgelegt sind. Die View hat die Aufgabe, die Daten aus dem Model zu rendern (anzuzeigen). Bei einer Web-Applikation wird hierbei in der Regel HTML-Output generiert, der vom Browser interpretiert und angezeigt wird. In Spring MVC ist eine View eine Klasse, die das Interface View implementiert. Der Controller ist für die Abarbeitung eines Requests verantwortlich. Er sorgt dafür, dass das Model erzeugt wird und übergibt dieses im Anschluss and die View für die Anzeige. Ein Spring MVC Controller implementiert das Interface Controller. Eine zentrale Komponente der MVC Implementierung von Spring ist das DispatcherServlet. | |
| Spring Web Flow | Spring Web Flow ist eine Erweiterung von Spring MVC und ermöglicht Abläufe von Anwendungsfällen in Webanwendungen wiederverwendbar und konfigurierbar zu erstellen. Diese Abläufe bzw. Flows können in Java und XML definiert werden.
Spring Web Flow basiert auf dem Modell eines endlichen Automaten, ist also für Anwendungsfälle mit definierten Start- und Endzustand geeignet. Neben Spring Web MVC werden Spring Portlet MVC und andere Frameworks für Webanwendungen wie z.B. JSF unterstützt. | |
| T nach oben |
| U nach oben |
| V nach oben | ||
| View | Im Spring-MVC-Framework ist eine View-Klasse für die Darstellung (das Rendern) des Models verantwortlich. Eine View-Klasse muss die render-Methode implementieren, die durch das View-Interface vorgegeben wird. | |
| ViewResolver | Ein ViewResolver mappt einen View-Namen auf eine View-Klasse, die für die Anzeige verantwortlich ist. In manchen Fällen wird neben einer View-Klasse noch eine View-Datei angegeben, welche die View-Definition beinhaltet (z.B. bei der Verwendung einer JSP als View). Der ViewResolver entkoppelt die View von Controller und Model.
Das Spring Framework enthält folgende Implementierungen des ViewResolver-Interface: BeanNameViewResolver ResourceBundleViewResolver URLBasedViewResolver XmlViewResolver | |
| W nach oben |
| X nach oben |
| Y nach oben |
| Z nach oben |
Copyright © 2008–2009 Holisticon AG
Dieses Glossar darf in vollständiger Form und unverändert jederzeit kopiert und kostenlos weitergegeben werden. Der Hinweis auf die Originalquelle http://www.holisticon.de/cms/SpringGlossar/Startseite muss ebenso wie dieser Copyright-Hinweis stets angegeben werden. Es ist nicht zulässig, das Glossar kommerziell zu vertreiben, gegen Entgelt weiterzugeben oder Inhalte zu verändern. Im Rahmen nicht-kommerzieller Verwendungen, beispielsweise Diplomarbeiten, darf das Glossar gerne übernommen werden. Die Verwendung in kommerziellen Zusammenhängen, beispielsweise in öffentlichen oder internen Schulungen, firmeninternen Netzwerken, Publikationen, Produkten etc. ist prinzipiell gestattet, wenn eine entsprechende Meldung an gesendet wird. Die Weitergabe ist sowohl in elektronischer als auch gedruckter Form zulässig. Im Internet zugängliche Kopien sind ebenfalls zu melden.
Hinweis zu den Urhebern der dargestellten Abbildungen: Alle hier wiedergegebenen Grafiken wurden von uns erstellt und sind NICHT von Dritten bezogen!
Nehmen Sie Kontakt mit uns auf!
Ihre Ansprechpartner:
| Oliver Ochs | Norman Erck |
| Telefon: +49 40 5074 2722 |