关于BeanPostProcessor中各个回调调用的顺序

1、InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation(beanClass, beanName)

    该方法在创建对象之前会先掉用,如果有返回实例则直接使用不会去走下面创建对象的逻辑,并在之后执行

        BeanPostProcessor.postProcessAfterInitialization(result, beanName)

2、SmartInstantiationAwareBeanPostProcessor.determineCandidateConstructors(beanClass, beanName)

    如果需要的话,会在实例化对象之前执行

3、MergedBeanDefinitionPostProcessor.postProcessMergedBeanDefinition(mbd, beanType, beanName)

    在对象实例化完毕 初始化之前执行

4、InstantiationAwareBeanPostProcessor.postProcessAfterInstantiation(bw.getWrappedInstance(), beanName)

    在bean创建完毕初始化之前执行

5、InstantiationAwareBeanPostProcessor.postProcessPropertyValues(pvs, filteredPds, bw.getWrappedInstance(), beanName)

    在bean的property属性注入完毕 向bean中设置属性之前执行

6、BeanPostProcessor.postProcessBeforeInitialization(result, beanName)

    在bean初始化(自定义init或者是实现了InitializingBean.afterPropertiesSet())之前执行

7、BeanPostProcessor.postProcessAfterInitialization(result, beanName)

    在bean初始化(自定义init或者是实现了InitializingBean.afterPropertiesSet())之后执行

8、其中DestructionAwareBeanPostProcessor方法的postProcessBeforeDestruction(Object bean, String beanName)会在销毁对象前执行

你可能感兴趣的:(关于BeanPostProcessor中各个回调调用的顺序)