Spring源码解析(十四)——AOP原理——AnnotationAwareAspectJAutoProxyCreator执行时机

 

 

 *             AnnotationAwareAspectJAutoProxyCreator => InstantiationAwareBeanPostProcessor
 *         4)、finishBeanFactoryInitialization(beanFactory);完成BeanFactory初始化工作;创建剩下的单实例bean

《Spring源码解析(十四)——AOP原理——AnnotationAwareAspectJAutoProxyCreator执行时机》
 *             1)、遍历获取容器中所有的Bean,依次创建对象getBean(beanName);
 *                 getBean->doGetBean()->getSingleton()->
 *             2)、创建bean
 *                 【AnnotationAwareAspectJAutoProxyCreator在所有bean创建之前会有一个拦截,InstantiationAwareBeanPostProcessor,会调用postProcessBeforeInstantiation()】
 *                 1)、先从缓存中获取当前bean,如果能获取到,说明bean是之前被创建过的,直接使用,否则再创建;
 *                     只要创建好的Bean都会被缓存起来
 *                 2)、createBean();创建bean;
 *                     AnnotationAwareAspectJAutoProxyCreator 会在任何bean创建之前先尝试返回bean的实例
 *                     【BeanPostProcessor是在Bean对象创建完成初始化前后调用的】
 *                     【InstantiationAwareBeanPostProcessor是在创建Bean实例之前先尝试用后置处理器返回对象的】
 *                     1)、resolveBeforeInstantiation(beanName, mbdToUse);解析BeforeInstantiation
 *                         希望后置处理器在此能返回一个代理对象;如果能返回代理对象就使用,如果不能就继续

《Spring源码解析(十四)——AOP原理——AnnotationAwareAspectJAutoProxyCreator执行时机》
 *                         1)、后置处理器先尝试返回对象;
 *                             bean = applyBeanPostProcessorsBeforeInstantiation():
 *                                 拿到所有后置处理器,如果是InstantiationAwareBeanPostProcessor;
 *                                 就执行postProcessBeforeInstantiation
 *                             if (bean != null) {
                                bean = applyBeanPostProcessorsAfterInitialization(bean, beanName);
                            }

《Spring源码解析(十四)——AOP原理——AnnotationAwareAspectJAutoProxyCreator执行时机》

《Spring源码解析(十四)——AOP原理——AnnotationAwareAspectJAutoProxyCreator执行时机》

它会在任何bean创建之前,尝试拦截。

《Spring源码解析(十四)——AOP原理——AnnotationAwareAspectJAutoProxyCreator执行时机》
 * 
 *                     2)、doCreateBean(beanName, mbdToUse, args);真正的去创建一个bean实例;和3.6流程一样;
 *                     3)、

 

 

 

 

 

 

 

 

 

    原文作者:AOP
    原文地址: https://blog.csdn.net/csdn_kenneth/article/details/83512150
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞