一、BeanPostProcessor
1.1 postProcessBeforeInitialization
在任何 bean 初始化回调(如 InitializingBean 的afterPropertiesSet或自定义初始化方法)之前,
将此BeanPostProcessor应用于给定的新 bean 实例。 bean 已经被填充了属性值。 返回的 bean 实例
可能是原始实例的包装器。
@Nullable
default Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
1.2 postProcessAfterInitialization
在任何 bean 初始化回调(如 InitializingBean 的afterPropertiesSet或自定义初始化方法)之后,
将此BeanPostProcessor应用于给定的新 bean 实例。 bean 已经被填充了属性值。 返回的 bean 实例
可能是原始实例的包装器。
@Nullable
default Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
二、MergedBeanDefinitionPostProcessor
2.1 postProcessBeforeInstantiation
在目标 bean 被实例化之前应用这个 BeanPostProcessor。 返回的 bean 对象可能是一个代理来代替目标 bean,
有效地抑制目标 bean 的默认实例化。
@Nullable
default Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) throws BeansException {
return null;
}
2.2 postProcessAfterInstantiation
在 bean 被实例化之后,通过构造函数或工厂方法,但在 Spring 属性填充(从显式属性或自动装配)发生之前执行操作。
default boolean postProcessAfterInstantiation(Object bean, String beanName) throws BeansException {
return true;
}
三、InstantiationAwareBeanPostProcessor