04 2019 档案
摘要:前言:在【spring源码分析】IOC容器初始化(十一)中提到了初始化bean的三个步骤: 激活Aware方法。 后置处理器应用(before/after)。 激活自定义的init方法。 这里我们就来看下Spring是如何激活Aware方法的。 Aware是什么 Aware是一个空接口,包路径为:o
阅读全文
摘要:前言:在经过前面十二篇文章的分析,对bean的加载流程大致梳理清楚了。因为内容过多,因此需要进行一个小总结。 经过前面十二篇文章的漫长分析,终于将xml配置文件中的bean,转换成我们实际所需要的真正的bean对象。 总结 【spring源码分析】IOC容器初始化(一):主要分析了Spring是如何
阅读全文
摘要:前言:在doCreateBean方法中还遗留一个问题没有分析:循环依赖。循环依赖在Spring中是非常重要的一个知识点,因此单独进行分析。 什么是循环依赖 循环依赖就是循环引用,两个或两个以上的bean互相引用对方,最终形成一个闭环。如A依赖B,B依赖C,C依赖A。如下图所示: 循环依赖其实就是一个
阅读全文
摘要:前言:前面分析了doCreateBean中的createBeanInstance函数,接下来分析其剩余流程。 首先贴上doCreateBean函数: 分析: 首先判断是否有后置处理器,如果存在在先执行后置处理器(applyMergedBeanDefinitionPostProcessors)。 接下
阅读全文
摘要:前言:前文【spring源码分析】IOC容器初始化(九)中分析了AbstractAutowireCapableBeanFactory#createBeanInstance方法中通过工厂方法创建bean对象的流程,这里接着分析createBeanInstance方法中的剩余流程。 直接看createB
阅读全文
摘要:前言:上篇文章末尾提到createBeanInstance方法中使用工厂方法实例化Bean对象,本文将对该方法进行分析。 AbstractAutowireCapableBeanFactory#instantiateUsingFactoryMethod 可以看到这里是委托给ConstructorRes
阅读全文
摘要:前言:在上文bean加载过程中还要一个非常重要的方法没有分析createBean,该方法非常重要,因此特意提出来单独分析。 createBean方法定义在AbstractBeanFactory中: 该方法根据给定的beanName、BeanDefinition和args实例化一个bean对象。所有b
阅读全文
摘要:前言:在【spring源码分析】IOC容器初始化(六)中分析了从单例缓存中加载bean对象,由于篇幅原因其核心函数 FactoryBeanRegistrySupport#getObjectFromFactoryBean并未进行详细分析,本文将继续对bean加载过程的分析。 FactoryBeanRe
阅读全文
摘要:前言:经过前几篇文章的讲解,我们已经得到了BeanDefinition,接下来将分析Bean的加载。 获取Bean的入口:AbstractApplicationContext#getBean 分析:首先检查BeanFactory是否存活,还记得之前分析过的prepareRefresh()方法吗?如果
阅读全文