随笔分类 - 源码 / Spring IOC
Spring IOC
摘要:1 前言 Spring 帮我们创建 Bean,那么它是如何创建的呢?一种是 FactoryBean 类似提供工厂的创建,还有一种就是利用我们类的构造器进行创建。那么当我们有多个构造器的时候,它又是如何选择的呢,具体情况又是如何的,这节我们就来看看。 2 构造器的选择 2.1 选择的入场时机 我们这里
阅读全文
摘要:1 前言 Spring 帮助我们管理着 Bean,那么带来的一个思考就是 Bean 该维护一个实例呢?还是每次都获取新的呢?单例的依赖多例的作用范围的变化怎么处理呢?也就是 Bean 的一个作用范围的管理是怎么控制的呢?这就是我们本节要看的 Scope。 2 Scope 介绍 2.1 @Scope
阅读全文
摘要:1 前言 Bean 的创建周期大家可能都知道,三级缓存大家也都知道,那么他俩之间交互的细节如何?这节我就捋一下普通 Bean 的一个创建过程和三级缓存之间的交互。 2 图解剖析 2.1 普通无代理 Bean 创建 大概有4次交互: (1)getBean 的时候,getSingleton(beanNa
阅读全文
摘要:1 前言 今天想细细研究下 BeanDefinition,至于为什么,主要是看了很多遍,没太关注 mergedBeanDefinition 所以比较好奇,它是干啥的呢?所以得先搞清 BeanDefinition,开整。 2 源码分析 我们得先知道 BeanDefinition 在 Spring 这个
阅读全文
摘要:1 前言 @PostConstruct、@PreDestory这两个注解大家应该有用过吧,我们这篇分析一下主要是PostConstruct这个注解的解析时机和执行时机。 2 源码分析 2.1 解析时机-doCreateBean的applyMergedBeanDefinitionPostProcess
阅读全文
摘要:1 前言 我们的bean经过的应该就剩下initializeBean这个方法,这个方法对上一步的populateBean属性填充完,做最后的剩余工作,这个里边的东西相比之前几个那可真是让人看着开心加愉快了,我们来看。 2 源码分析 2.1 方法通读 看一下 initializeBean 方法的源码:
阅读全文
摘要:1 前言 好了,我们这篇文章讲解下populateBean,也就是bean的属性填充,并不仅仅是设置值,还有很多事情要做的。比如你的属性值类型转换、表达式解析等,关于属性填充的一些知识,本章先介绍这里。接下来,我们深入到源码中,从源码中了解属性填充的整个过程。 2 源码分析 2.1 populate
阅读全文
摘要:1 前言 获取Bean我们大概都了解过了,这篇我们着重讲一下在获取bean的时候,出现的一个循环依赖的问题,这面试可以说是一道必问的题了,看的时候多想多看,别钻死牛角尖,我看的时候我陷入了一个牛角尖,我就在纠结为什么要用三个缓存来解决循环依赖呢,其实一个缓存也可以解决丫,干嘛要用三个呢。我总是陷入这
阅读全文
摘要:1 前言 上一文,我们讲解了getBean里的一些过程,这节我们详细来讲一讲创建bean,也就是createBean。createBean默认的实现类是AbstractAutowireCapableBeanFactory,createBean会调用doCreateBean和createBeanIns
阅读全文
摘要:1 前言 在本篇文章中,我们将会详细分析BeanFactory的getBean(String)方法实现细节及所调用的方法。 2 源码分析 首先我们先通读一下doGetBean方法,了解里边重点的几个步骤,然后我们再分析每个步骤里边具体都做了什么。 2.1 方法通读 方法的注释都写在里边了,涉及的东西
阅读全文
摘要:1 前言及准备工作 Spring老生常谈,JavaWeb程序员的必备,程序员不看源码不懂源码,路走不长,所以耐心看,边看操作。 本文是 Spring IOC源码分析系列文章的导读文章,将会着重介绍 Spring 的一些使用方法和特性,为后续的源码分析文章做铺垫。 另外需要特别说明一下,本系列的源码分
阅读全文