先来看看BeanPostProcessor接口的定义:
public interface BeanPostProcessor {
Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException;
Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException;
}
需要了解的有几点:
1、接口实现给Spring回调;
2、作用范围是Spring接管的所有Bean;
3、作用是实例化任意Bean前和后对Bean实例进行修改;
4、返回的Bean会被装入IOC容器。
5、需要将自定义的实现注册到IOC容器才能生效;
6、BeanPostProcessor和容器绑定,对父容器或子容器中Bean不起作用。
掌握以上几点就可以很轻松的使用BeanPostProcessor接口了,这里说说一种使用场景,在多数据源的情况下,且使用了MyBatis的SqlSessionDaoSupport,这时不同的SqlSessionDaoSupport需要注入不同的DataSource,这个时候就可以在实例化Bean时通过注解判断,注入不同的DataSource。