Ich mache eine BeanPostProcessor-Implementierung. Mein Bean PostProcessor wird 3 mal ausgeführt. Ich bekomme Post-Prozessor 2 mal extra vor Init-Methode aufgerufen. Ich kann nicht herausfinden, warum es passiert. Bitte hilf mir.Spring BeanPostProcessor aufgerufen 3 Mal
Mein Code und Konfigurationsdateien sind als
BeanPostProcesssor implementatin
public class BeanPP implements BeanPostProcessor{
@Override
public Object postProcessBeforeInitialization(Object o, String string) throws BeansException {
System.out.println("---before initialization ------");
return o;
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public Object postProcessAfterInitialization(Object o, String string) throws BeansException {
System.out.println("----After initializaion ---- ");
return o;
//To change body of generated methods, choose Tools | Templates.
}
}
Kunden Bean
public class Customer {
private String name;
public String getName() {
System.out.println("..getName.....");
return name;
}
public void setName(String name) {
System.out.println("..setName.....");
this.name = name;
}
@PostConstruct
public void init(){
System.out.println("....Bean is going though init method");
}
@PreDestroy
public void destory(){
System.out.println("....Bean is going to destroy.......");
}
}
Konfiguration Klasse
@Configuration
public class AppConfig {
@Bean(name="customer")
public Customer getCustomer(){
return new Customer();
}
@Bean
public BeanPP getPP(){
return new BeanPP();
}
}
Hauptklasse
public class MainApp {
public static void main(String[] args) {
ApplicationContext appContext = new AnnotationConfigApplicationContext(AppConfig.class);
Customer customer = (Customer)appContext.getBean("customer");
customer.setName("test user ");
System.out.println(".Name is .."+customer.getName());
}
}
Ausgabe
--- vor der Initialisierung ------ ---- Nach initializaion ---- --- vor der Initialisierung ------ ---- Nach der Initialisierung ---- --- vor der Initialisierung ------ .... Bean geht init Methode ---- Nach initializaion ---- ..setName ..... ..getName ..... .Name ist ..test Benutzer
Sie haben 3 Bohnen und es wird für sie alle heißen. Sie haben 'AppConfig',' Kunden' und 'BeanPP' alle 3 davon sind Bohnen. –