spring的BeanPostProcessor和BeanFac

2020-07-26  本文已影响0人  晨曦_lcq

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发生在实例化之前。

上一篇 下一篇

猜你喜欢

热点阅读