spring提供了两种后置处理bean的扩展接口,分别为BeanPostProcessor和BeanFactoryPostProcessor。
BeanPostProcessor bean级别的处理,针对某个具体的bean进行处理,提供初始化前和初始化后两个方法。
public interface BeanPostProcessor {
default Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
default Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
}
实现了这个接口,所有bean实例化的时候都会执行初始化前和初始化后这两个方法。
BeanFactoryPostProcessor 针对beanFactory进行处理。
@FunctionalInterface
public interface BeanFactoryPostProcessor {
void postProcessBeanFactory(ConfigurableListableBeanFactory var1) throws BeansException;
}
bean的创建流程为:定义bean标签 -> 将bean解析成BeanDefinition -> 调用构造方法实例化 -> 属性依赖注入
BeanFactoryPostProcess发生在第二步后第三步之前。
区别
BeanPostProcessor发生在实例化之后,初始化之前和初始化之后。BeanFactoryPostProcessor发生在实例化之前。
网友评论