关于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)会在销毁对象前执行

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容