News

 

13.07.2010

Die Gewinner des Holisticon-WM-Tippspiels 2010 spenden den erspielten Gesamtbetrag der Sternenbrücke, einem Hamburger Kinder-Hospiz. Die Sternenbrücke begleitet Familien und ihre kranken Kinder auf deren letztem Stück des Lebensweges. Diese wichtige Unterstützung liegt uns seit Jahren am Herzen. Mit unserem Engagement möchten wir einen kleinen Teil dazu beitragen. Herzlichen Glückwunsch den glücklichen Siegern und vielen Dank für die Spende!

16.05.2010

Holisticon ist auch in diesem Jahr wieder Roundtable-Sponsor der Seacon in Hamburg. mehr…

30.03.2010

Unser neues Agiles Glossar erklärt mehr als 80 Begriffe aus Scrum und anderen agilen Verfahren. mehr…

08.03.2010

Holger Koschek wird auf der REConf 2010 (15.03. bis 18.03.2010, München) den Vortrag Das A-Team: Anforderungsermittlung in agilen Projekten halten. mehr…

08.02.2010

Wir suchen flugs talentierte Java-EE-Entwickler (m/w), die sich zukünftig zum Softwarearchitekten weiterentwickeln möchten. mehr…

02.02.2010

Planning-Poker-Karten gibt es bei uns schon lange. Neu ist unsere ausführliche Regelbeschreibung zu diesem agilen Schätzverfahren. mehr…

30.11.2009

Roman Schlömmer wird auf den OMG Information Days 2009 (01.12. bis 03.12.2009, Düsseldorf / Darmstadt / München) den Vortrag Geschäftsprozesse und Schnittstellen halten. mehr…

28.11.2009

Das Buch Geschichten vom Scrum von Holger Koschek ist beim dpunkt.verlag erschienen. mehr…

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
ApplicationContext Das ApplikationsContext Interface erweitert das BeanFactory Interface mit zusätzlicher Funktionalität, die vor allem bei Enterprise Applikationen häufig benötigt wird.

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.


B     nach oben
BeanFactory

Die BeanFactory ist der IoC (Inversion of Control) 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.

Eine Applikation greift auf das Spring Framework zu, indem ein BeanFactory Objekt (Objekt, welches das BeanFactory Interface implementiert) instanziiert wird. Danach kann über dieses Objekt auf die Komponenten (Spring Beans), die vom Spring Container verwaltet werden, zugegriffen werden.

Die Konfiguration einer BeanFactory kann programmatisch erfolgen. In den meisten Fällen erfolgt die Konfiguration allerdings über ein externes Konfigurationsfile (Property-Datei oder XML-Datei). Für komplexere Applikationen sollte man die Konfiguration über XML vorziehen.

Das Spring Framework stellt hierfür die Klasse XmlBeanFactory zur Verfügung.
Beispiel:

 
public class XmlBeanFactoryExample {
 public static main(String[] args) {

  XmlBeanFactory beanFactory = 
   new XmlBeanFactory(
    new ClassPathResource("beanDefinitions.xml"));

 BundesligaManager blManager = (BundesligaManager)
    beanFactory.getBean("bundesligaManager");
 List<Team> teams = blManager.listTeams();
  }
} 
 


C     nach oben
Controller Der Begriff Controller steht für das ‘C’ im Spring MVC Framework. 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.


D     nach oben
Dependency Injection Unter Dependency Injection versteht man das Anlegen eines Objektgrafen zur Laufzeit durch den Spring Container. In einer Konfigurationsdatei werden Klassen sowie deren Beziehungen und Abhängigkeiten untereinander definiert.

Somit übernimmt das Framework die Aufgabe des Erzeugens von Objekten und deren Abhängigkeiten. Dies hat folgende Vorteile:

  • Abhängigkeiten werden an einer zentralen Stelle deklariert und sind nicht hart im Code verdrahtet
  • Steigerung der Flexibilität. Komponenten können ausgetauscht werden, ohne den Code neu kompilieren zu müssen
  • Die Komponenten eines Systems werden entkoppelt. Eine Komponente ist von einem Interface einer anderen Komponente und nicht von konkreten Klassen abhängig
  • Erleichtert das Testen
DispatcherServlet Das DispatcherServlet spielt in Spring MVC, Springs Implementation der MVC Architektur, 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
Handler Mappings Ein HandlerMapping definiert, 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:
Der Beanname des aufzurufenden Controllers wird über die URL des Requests identifiziert. Wildcards werden nicht unterstützt. Beispiel: Eine URL “/item/index.html” wird durch den BeanNameUrlHandlerMapping auf eine (Controller)SpringBean mit der ID “/item/index.html” gemappt.

SimpleUrlHandlermapping:
Bei der Konfiguration des Mappings kann Ant-Syntax für die URL Pfadangabe benutzt werden.

ControllerClassNameHandlerMapping:
Pfad der URL wird vom Klassenname des Controllers abgeleitet (seit Spring 2.5).

HandlerInterceptor Zusätzlich zu einem RequestHandler (Controller) können in Spring 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
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 und 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 die das Framework bzw. der Container zur Laufzeit Informationen in die Komponenten injiziert ober bestimmtes Verhalten (über Methodenaufrufe) auslöst.

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


M     nach oben
MVC MVC steht für das Model-View-Controller Architektur-Pattern. Das Entwurfsmuster unterteilt ein Software-System in drei verschiedene Bereiche.
  • Model: Daten, die vom System verwaltet und angezeigt werden
  • View: Komponenten eines Systems, die für die Anzeige der Daten verantwortlich sind
  • Controller: Steuerungs-Komponente, die Anfragen entgegen nimmt, Geschäftslogik aufruft und relevante Daten dem View zur Anzeige übergibt

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
Spring MVC 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 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:

  • Service Objekte: stellen Service Methoden zur Verfügung
  • Data Access Objekte (DAO): kapseln den Datenzugriff
  • Infrastrukturelle Objekte: Hibernate Session Factories, JMS Queues, etc.

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.

Die Konfiguration erfolgt in einer XML- oder Property-Datei. Aus Gründen der Lesbarkeit empfiehlt sich die Verwendung von XML.

Beispiel:

 
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="...">

  <bean id=" class="...">
    <!— Bean Konfiguration -->
  </bean>

  <bean id="..." class="...">
    <!— Bean Konfiguration -->
  </bean>

  <!-- weitere Bean Konfigurationen -->

</beans>
 

Eine Bean-Definition definiert u.a. folgende Metadaten:

  • Eindeutige ID einer Bean
  • Klassenname (kompletter Package Pfad)
  • Scope einer Bean (Singleton oder nicht Singleton)
  • Referenzen auf andere Beans
  • Konstruktor-Argumente

Die komplette Liste der Metadaten ist in der Spring Dokumentation beschrieben.

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:

  • Singleton:Für eine Spring Bean erzeugt der IoC-Container genau eine Objekt-Instanz per Spring IoC-container
  • Prototype: Bei Zugriff über den IoC-Container wird stets ein neues Objekt erzeugt
  • Request: Nur bei Webanwendungen. Für den Lebenszeitraum eines Requests wird immer die Objekt-Instanz verwendet
  • Session: Nur bei Webanwendungen. Für den Lebenszeitraum einer Session wird immer die Objekt-Instanz verwendet
  • Global-Session: Nur bei Portlet-Anwendungen. Für den Lebenszeitraum einer globalen Session wird immer die gleiche Objekt-Instanz verwendet


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
Die View wird unter dem entsprechenden Namen als Bean im ApplikationContext gesucht. Keine Unterstützung von Internationalisierung.

ResourceBundleViewResolver
Das View-Mapping wird in eine separate Property-Datei ausgelagert. Internationalisierung wird unterstützt.

URLBasedViewResolver
Der View-Name wird über eine URL aufgelöst.

XmlViewResolver
View-Definitionen werden in einem separaten XML-File vorgenommen. Internationalisierung wird nicht unterstützt.


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:

Jochen Jörg Roman Schlömmer
Telefon: +49 40 5074 2722