- 一、BeanPostProcessor
- 1.1 postProcessBeforeInitialization
- 1.2 postProcessAfterInitialization
- 二、MergedBeanDefinitionPostProcessor
- 2.1 postProcessBeforeInstantiation
- 2.2 postProcessAfterInstantiation
- 三、InstantiationAwareBeanPostProcessor
一、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


