1.beanPostProcessor的简单介绍
该接口是Spring本着对扩展开放的原则,允许开发者对bean实例化前后,对bean做一些特殊的处理,(如修改beanDefinition等),postProcessBeforeInitialization用于bean实例化前,postProcessAfterInitialization用于实例化后。
2.问题引出
应用场景我们已经基本了解,那么,BeanPostProcessor的实现类也是spring容器中的bean,那么它在实例化时,会不会调用上述的两个方法呢。现在我们看下一个案例:
2.1.首先定义一个BeanPostProcessor的实现类
public class MyBeanPostProcessor implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println(bean.getClass().getName()+"---pre create---");
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println(bean.getClass().getName()+"---after create---");
return bean;
}
}
2.2再定义一个普通的POJO
public class SimpleBean {