Java Reference
In-Depth Information
super.increment();
}
}
Unser Beispiel eines BeanPostProcessors wird durch die Klasse ExamplePostProcessor
(s. Listing 14.8) realisiert.
Listing 14.8 Klasse ExamplePostProcessor als BeanPostProcessor-Beispiel
package javacomp.spring.postprocessor;
import javacomp.spring.counter.Counter;
import javacomp.spring.hello.Hello;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.*;
public class ExamplePostProcessor implements BeanPostProcessor
{
public Object postProcessBeforeInitialization(Object bean,
String name)
throws BeansException
{
return bean;
}
public Object postProcessAfterInitialization(Object bean,
String name)
throws BeansException
{
System.out.println("nach Initialisierung von " + name);
if(bean instanceof Hello)
{
Hello h = (Hello) bean;
h.setGreeting("Hallo hallo");
}
else if(bean instanceof Counter)
{
return new DoubleCounter();
}
return bean;
}
}
Um den BeanPostProcessor zu aktivieren, muss in der XML-Konfi gurationsdatei der zwei-
ten Spring-Anwendung (s. Abschnitt 14.3) lediglich diese eine Zeile ergänzt werden:
<bean class="javacomp.spring.postprocessor.ExamplePostProcessor"/>
Dieser Eintrag ist ein Beispiel dafür, dass eine Spring-Komponente nicht unbedingt einen
Namen haben muss. Dies ist dann möglich, wenn sie in keiner anderen Komponente refe-
renziert wird und wenn auch im Anwendungsprogramm über getBean nicht darauf zuge-
griff en wird. Wie oben erwähnt kann die Komponente wegen der Autodection des Spring-
Frameworks dennoch ihre Rolle als BeanPostProcessor spielen.
Das Anwendungsprogramm kann unverä ndert vom zweiten Spring-Beispiel übernommen
werden. Die Ausgabe zeigt den Eff ekt des BeanPostProcessors. Es wird sowohl der von ihm
gesetzte Gruß ausgegeben als auch in Zweierschritten gezählt.
 
Search WWH ::




Custom Search