Java Reference
In-Depth Information
Advice-Komponenten sind im Normalfall Singletons, wenn — wie im Beispiel oben — kein
Scope angegeben wird. Das bedeutet, dass dasselbe Advice-Objekt für unterschiedliche Ziel-
objekte eingesetzt wird. Es ist kein Problem, das richtige Zielobjekt zu fi nden, denn es wird
im MethodInvocation-Parameter (getThis) mitgeliefert. Falls man für jedes Objekt ein eige-
nes Advice-Objekt haben möchte, so lässt sich dies leicht durch die Angabe Prototype als
Scope in der Advice-Komponente erreichen. In der Regel ist es nicht notwendig. Bitte
machen Sie sich klar, dass das Advice-Objekt nicht das Proxy-Objekt ist! Wie im ersten Teil
des Buchs über Dynamic Proxies erklärt wurde, sind dynamische Proxies Objekte dyna-
misch erzeugter Klassen. Die Advice-Methoden werden von den Methoden dieser dyna-
misch erzeugten Proxy-Klassen aufgerufen. Ein Advice-Objekt stellt also einen Invocation-
Handler dar. Wenn es also auch nur ein einziges Advice-Objekt gibt, hat jedes Objekt
dennoch sein eigenes Proxy-Objekt.
Eine AOP-Anwendung lässt sich in Spring übrigens auch durch Annotationen konfi gurie-
ren. Ein Beispiel dazu fi nden Sie auf der Web-Seite zu diesem Buch.
1410 Bewertung
Wie erwähnt ist die Vorstellung, was eine Komponente ist, bei Spring gleich wie bei Java
Beans. Unter einer Spring-Komponente verstehen wir also je nach Kontext eine Bean-Klasse
oder ein Bean-Objekt. Im Gegensatz zu Java Beans lässt sich bei Spring aber eindeutig ein
Komponenten-Framework identifi zieren, das wir in diesem Kapitel als ApplicationContext
kennengelernt haben. Betrachten wir nun die Merkmale E1 bis E4 genauer:
! Zu E1: Eine Spring-Komponente ist eine Klasse, die in einem <bean>-Tag vorkommen
kann. Dies gilt prinzipiell für jede Bean-Klasse, selbst wenn sie keinen parameterlosen
Konstruktor hat, denn man kann in einem solchen Fall die benötigten Parameter im
<bean>-Tag angeben. Insofern gibt es nur ein sehr schwach ausgeprägtes Komponenten-
modell bei Spring, wobei man — wie schon bei Java Beans erläutert — es durchaus positiv
sehen kann, dass es keine Vorgaben gibt.
! Zu E2: Die Kopplung der Java-Beans-Komponenten erfolgt durch das Komponenten-
Framework von Spring aufgrund von XML-Konfi gurationsdateien, die durch die So ware-
Entwickler vorgegeben werden. Dies ist der Kern von Spring und leistet den größten Bei-
trag zu Spring als Komponentensystem. Durch BeanPostProcessing kann die Kopplung
anwendungsspezifi sch oder für die Zwecke der AOP noch beeinfl usst werden.
! Zu E3: Als „Einstiegsklassen“ kann man die Klassen sehen, die in den <bean>-Tags der
K o n fi gurationsdateien vorkommen. Objekte dieser Klassen werden vom Spring-Frame-
work erzeugt. Ein Lebenszyklus ist in schwach ausgeprägter Weise vorhanden. So kann
man beispielsweise im <bean>-Tag unter „init-method“ und „destroy-method“ die Namen
von Methoden einer Klasse angeben, die nach der Erzeugung bzw. vor dem Löschen von
Spring-Komponenten automatisch vom Spring-Framework aufgerufen werden. Das
Spring-Framework in Form des ApplicationContext bietet einige Funktionen für seine
Komponenten an, auf die wir im Rahmen dieser Besprechung nicht eingegangen sind, die
aber vorhanden sind.
 
Search WWH ::




Custom Search