Java Reference
In-Depth Information
<bean id="counter" class="javacomp.spring.counter.Counter">
</bean>
<bean id="hello" class="javacomp.spring.hello.Hello">
<property name="greeting" value="Hallo"/>
<property name="counter" ref="counter"/>
</bean>
</beans>
Wenn in einer Anwendung, die hier nicht abgedruckt ist, die Hello-Komponente auch mehr-
fach vom ApplicationContext angefordert wird, wird der Zähler bei jedem Aufruf von say-
Hello wie erwartet hochgezählt. Da für beide Komponenten keine Scope-Angabe vorliegt,
gilt für beide Singleton. Es gibt also jeweils nur ein Objekt zu jeder Klasse. Wenn der Scope
für Hello auf Prototype gesetzt wird, gibt es bezüglich der Ausgabe keine sichtbare Ände-
rung. Es gibt jetzt zwar mehrere Hello-Objekte durch mehrfaches Aufrufen von getBean mit
dem String-Parameter „hello“. Da aber der Scope von Counter immer noch Singleton ist,
referenzieren alle Hello-Objekte dasselbe Counter-Objekt. Erst wenn der Scope von Hello
auch auf Prototype geändert wird, gibt es zu jedem Hello-Objekt ein eigenes Counter-Objekt.
In diesem Fall werden die Aufrufe von sayHello separat für jedes Hello-Objekt gezählt.
144 Factory-Methoden und Factory-Beans
Es ist möglich, die Spring-Komponenten nicht durch das Spring-Framework, sondern durch
eigenen Code zu erzeugen. Wenn eine Klasse eine statische Methode enthält, in der ein
Objekt dieser Klasse angelegt (z. B. durch Nutzung eines privaten Konstruktors) und
zurückgegeben wird, kann man durch Angabe des Namens dieser statischen Methode als
„factory-method“ im Tag <bean> dem Spring-Framework vorschreiben, dass es diese stati-
sche Methode zur Erzeugung von Bean-Objekten dieser Klasse verwenden soll.
Möglich ist auch, dass die Factory-Methode nicht-statisch ist und somit auf ein Objekt ange-
wendet werden muss. Nehmen wir an, die Objekte einer Bean-Klasse X sollen durch die
(nicht-statische) Factory-Methode m der Klasse Y erzeugt werden. Die Konfi guration sieht
dann so aus, dass man ein Objekt der Klasse Y als Komponente unter einem Namen (zum
Beispiel „y“) defi niert. Im Tag <bean> für die Klasse X gibt man nicht nur den Namen „m“
als Factory-Methode an, sondern zusätzlich als „factory-bean“ den Namen der Y-Kompo-
nente („y“).
145 Autowiring
Autowiring bedeutet „automatische Verdrahtung“. Damit ist gemeint, dass man nicht mehr
explizit vorgeben muss, auf welches Spring-Objekt ein Attribut eines anderen Spring-
Objekts zeigen soll, sondern dass das Spring-Framework dies selbst herausfi nden soll. Im
zweiten Spring-Beispiel im Abschnitt 14.3 gibt es z. B. nur einen einzigen Eintrag für die
Klasse Counter, was übrigens nicht so sein muss. Es ist durchaus möglich, dass es zu
 
Search WWH ::




Custom Search