Spring源码分析之InstantiationAwareBeanPostProcessor
Bean定义后置处理器子接口(二)-InstantiationAwareBeanPostProcessor
前言
InstantiationAwareBeanPostProcessor 接口继承 BeanPostProcessor 接口,上一篇文章专门写了BeanPostProcessor源码分析,既然继承了BeanPostProcessor 接口,对于实现了InstantiationAwareBeanPostProcessor接口的类,应该有以上两个接口都有的功能,InstantiationAwareBeanPostProcessor接口的类还可以进行扩展。
InstantiationAwareBeanPostProcessor 接口定义如下
public interface InstantiationAwareBeanPostProcessor extends BeanPostProcessor {
//扩展接口
@Nullable
default Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) throws BeansException {
return null;
}
//扩展接口
default boolean postProcessAfterInstantiation(Object bean, String beanName) throws BeansException {
return true;
}
//扩展接口
@Nullable
default PropertyValues postProcessProperties(PropertyValues pvs, Object bean, String beanName)
throws BeansException {
return null;
}
//扩展接口 目前测试版本已废弃
@Deprecated
@Nullable
default PropertyValues postProcessPropertyValues(
PropertyValues pvs, PropertyDescriptor[] pds, Object bean, String beanName) throws BeansException {
return pvs;
}
}
现象
一样的方式,通过观察现象再分析内部逻辑
环境准备:
测试的实现类
@Component
public class MyPostProcessor implements InstantiationAwareBeanPostProcessor {
/**
* 重写 父类 BeanPostProcessor 接口的方法
* @param bean
* @param beanName
* @return
* @throws BeansException
*/
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("postProcessBeforeInitialization"+"方法执行了,BeanName为:"+beanName);
return null;