一、简介
InstantiationAwareBeanPostProcessor 是 Spring 的一个扩展点,他是 BeanPostProcessor 的子类,扩展了 BeanPostProcessor ,而外提供了 3 个方法:
1、Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName)
2、boolean postProcessAfterInstantiation(Object bean, String beanName)
3、PropertyValues postProcessPropertyValues(PropertyValues pvs, PropertyDescriptor[] pds, Object bean, String beanName)
本篇我们来了解 postProcessAfterInstantiation 这个方法的作用,这个方法在 postProcessPropertyValues 之前执行,他有一个 boolean 值,主要是判断 bean是否需要填充属性,如果返回 true ,填充属性,如果返回 false,不填充属性。Spring 中默认实现了这个后置处理器的扩展点都是返回 true,所以才能正常填充属性。如果我们自定义了一个类,实现了InstantiationAwareBeanPostProcessor 的 postProcessAfterInstantiation 方法,返回 false,将不会给所有的 bean填充属性,但是,这个方法有两个参数,bean,beanName,使得我们可以针对性的判断哪个 Bean 需不需要填充属性。下面,我们通过代码更好理解。