BeanPostProcessor類[interface]: bean的後置處理器
作用:在bean初始化前後進行一些處理工作
有兩個方法
1、postProcessBeforeInitialization():在初始化之前進行後置處理工作(在init-method之前),
什麼時候調用:它任何初始化方法調用之前(比如在InitializingBean的afterPropertiesSet初始化之前,或自定義init-method調用之前使用)
public class Bike {
public Bike(){
System.out.println("構造--------bike");
}
//postProcessBeforeInitialization在這裏之前調用
public void init(){
System.out.println("init-------bike");
}
//postProcessAfterInitialization在init之後調用
public void destory(){
System.out.println("destory-------bike");
}
}
@Configuration
public class DemoConfig {
@Bean(initMethod = "init",destroyMethod = "destory")
public Bike bike(){
return new Bike();
}
}
2、postProcessAfterInitialization():在初始化之後進行後置處理工作, 比如在InitializingBean的afterPropertiesSet()
實例配合上面的bean和config
@Component
public class HonryBeanPostProcessor implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("HonryBeanPostProcessor====postProcessBeforeInitialization");
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println("HonryBeanPostProcessor====postProcessAfterInitialization");
return null;
}
}
執行結果
構造--------bike
HonryBeanPostProcessor====postProcessBeforeInitialization
init-------bike
HonryBeanPostProcessor====postProcessAfterInitialization
IOC容器初始化完成