Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Spring Framework Grundkurs

Weitere Konzepte der Dependency Injection

Testen Sie unsere 2013 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Die Konfiguration von Scope, Listen und Autowiring erleichtern die Konfiguration von Beans. Außerdem lernen Sie, wie der Lebenszyklus einer Bean im Spring-Container aussieht.

Transkript

Für die Entwicklung mit Dependency Injection und dem Spring Framework möchte ich Ihnen innerhalb dieses Videos noch einige Tipps und Tricks geben. Zunächst einmal, wann immer Sie eine Bean erstellen, gibt es einen sogenannten Bean Scope. Der Bean Scope bezeichnet also, wann und wie Beans von Spring zurückgegeben werden und ob neue Instanzen für dieses Beans erzeugt werden müssen. Es gibt nun fünf verschiedenen Arten des Bean Scopes, allen voran der Singleton. Beim Singleton handelt es sich um den standardmäßig von Spring zurückgegebenen Scope d. h. wann immer Sie eine Bean deklarieren wird nur eine einzige Instanz zur Laufzeit erzeugt und bei jeder Abfrage diese Instanz zurückgegeben. Bei der Nutzung des Scopes Prototype wird für jeden Fall der Abfrage eine neue Instanz zurückgegeben. Die anderen drei Fälle beziehen sich vor allem auf das Verhalten im Web. Wenn also ein Request beispielsweise an das Spring Framework gestellt wird, so erzeugt es für jeden dieser Requests eine neue Instanz. Für den Request selber bleibt er aber über den gesamten Programmcode hinweg gleich. Bei einer Session, die eben für einen User der z. B. eine Internetseite aufruft, vergeben wird, bleibt für genau diesen User innerhalb seiner Session der Scope auch immer gleich auf dem jeweiligen Bean. Respektive ähnlich funktioniert das für eine sogenannte Globale Session, die dann oftmals anwendungsübergreifend angesiedelt ist. Wenn man sich nun nochmal diesen Singleton Scope illustrieren möchte, so gibt es den sogenannten Spring Container in dem sich die jeweiligen Objekte und Beans befinden. Wenn man nun von außen eine Abfrage gegen diesen Spring Container macht, mit Hilfe der getBean-Methode und einer jeweiligen ID, wird vom Container im Fall des Singleton Scopes die bestimmte Bean gesucht, innerhalb der Menge von Objekten, die vorhanden sind, und es wird lediglich eine einzige Instanz zurückgegeben, markiert durch die Deklaration des Scopes Singleton, der ja auch standardmäßig vergeben wird. Beim anderen Fall, dem Prototype Scope kommen also nun wieder mehrere Anfragen gegen den Spring Container und statt aus der vorhandenen Menge entsprechend die Bean zu suchen initialisiert er für jede Abfrage das Objekt neu. Die Angabe findet dann entsprechend durch "scope =prototype" statt. Für den Namen einer Bean kann mit Hilfe des Alias-Ausdrucks auch ein alternativer Name vergeben werden unter dem die Bean dann auch ansprechbar ist. Möglich ist das Ganze über eine simple Angabe im XML. In manchen Fällen möchte man auch mit Listen arbeiten können. Wenn man z. B. ein Dreieck initialisiert und diesem Dreieck mehrere Punkte übergibt, würde man dies mit Hilfe sogenannter Listentypen machen. Diese im Einzelnen sind ähnlich wie in Java selbst: Set, List, Map und entsprechend auch Properties. Anhand der Angabe List innerhalb des XML, kann also nun die jeweilige Menge an Beans entsprechend angegeben werden. Spring ist dazu außerdem in der Lage automatisch Zusammenhänge zu erraten, auch als Autowiring bezeichnet. Durch Autowiring werden also automatisch Referenzen auf andere Objekte aufgelöst. Das Ganze kann entweder byName passieren, also durch Referenz auf den gleichen Namen wie in diesem Beispiel würde jede ID "punktA" aufgelöst werden und entsprechend als Variable auf dem Dreieck hinterlegt. Andere Möglichkeiten sind auch via Constructor oder byType. Weiterhin ist es mit Spring-XML also auch möglich Vererbung abzubilden und sogenanntes Templating. Durch die Angabe eines parents kann man eine Bean einmalig deklarieren und dementsprechend auch wiederverwenden. Im hier gezeigten Fall würde also nun ein Dreieck erzeugt werden, dass bereits den Punkt "A" definiert, das Dreieck "2" würde diese Angabe übernehmen und zusätzlich den Punkt "B" definieren. Jede Bean kann sich auch über bestimmte Statusveränderungen informieren lassen, z. B. ist es möglich mit dem Interface BeanNameAware den Namen der Bean selbst zu erhalten. Mit ApplicationContextAware ist es möglich den Applikationskontext sich in die eigene Klasse geben zu lassen. Eine Bean unterliegt auch verschiedenen Ereignissen in ihrem Lebenszyklus. Diese werden auch als Lifecycle Events bezeichnet. Zum Beispiel, wenn die Bean initialisiert wird oder auch wenn die Bean zerstört wird. Dafür gibt es auch unterschiedliche Möglichkeiten die Bean entweder via Interface, über InitializingBean oder DisposableBean zu informieren, als auch mit XML, durch die Deklarationen der init-method und der destroy-method, die jeweils auf der Klasse deklariert sein muss. Bei der Reihenfolge des Aufrufs sollte man beides verwenden. Hier wir zuerst das Interface bevorzugt und danach XML. Der letzte interessante Punkt rundum Beans ist die sogenannte Methodeninjektion. Mit Hilfe des sogenannten MethodReplacer ist es möglich eine Methode auf einer anderen Bean zu ersetzen. Sie haben nun also einige weitere interessante Konstrukte kennengelernt, die Sie im Zusammenhang mit Dependency Injection und Spring Framework verwenden können.

Spring Framework Grundkurs

Steigen sie zum Java-Champion auf und meistern Sie den Umgang mit dem Spring Framework.

2 Std. 4 min (20 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Software:
Spring Framework Spring Framework 3
Exklusiv für Abo-Kunden
Erscheinungsdatum:24.09.2014

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!