1. 首先说下BeanPostProcessor接口中的两个方法,如下:
package org.springframework.beans.factory.config;
import org.springframework.beans.BeansException;
public interface BeanPostProcessor {
//Bean初始化的前置处理器
Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException;
//Bean初始化的后置处理器
Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException;
}
应用中自定义的Bean,可以实现这个接口,并覆盖这两个方法来控制Bean的初始化过程,即在Bean的初始化之前做一件事,即调用postProcessBeforeInitialization方法,也可以在Bean的初始化之后做一件事,即调用postProcessAfterInitialization方法。那么这两个方法究竟是如何被Spring调用的呢?
2. 在Bean的初始化过程中,会调用initializeBean方法,该方法的源码如下: