Spring源码阅读
Kevin-Jia
这个作者很懒,什么都没留下…
展开
-
Spring源码阅读1-IOC容器-IOC相关概念
IOC相关概念 自工作以来,使用Spring已经快3年了,之前主要是关注如何使用Spring,对其内部精致的构建没有涉及或者只有部分的涉及,为了更好的了解Spring的精髓和提高自己的简介,将之前学习Spring的文章和笔记,以及源码的阅读进行整理,形成该系列的文章,以供自己学习和反思。 控制反转 对于控制反转,我的理解是: 将创建依赖对象的方式交给框架、容器进行管理, 这种现象叫做控制反转。 比...原创 2019-05-14 16:41:59 · 208 阅读 · 0 评论 -
Spring源码阅读2-IOC容器-IOC设计整体架构
Spring IOC 容器实现整体概述 在Spring中,IOC容器的设计中,主要分为2种具体的表现形式: BeanFactory为代表的容器 ApplicationContext为代表的应用上下文容器 IOC容器到底是什么? 如果用一句话来表述,Ioc容器的底层数据结构,就是一个Map, 保存着各个Bean的定义,然后通过依赖注入等方式将这些Bean管理起来。 BeanFactory和App...原创 2019-05-14 16:45:23 · 402 阅读 · 0 评论 -
Spring源码阅读3-IOC容器-BeanDefinition的Resource定位
后续我将会按照一个具体的demo, 一步一步的跟进容器的启动过程。 首先构建一个Main, 用于启动容器。 public class Main { public static void main(String[]arg){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("...原创 2019-05-14 16:46:44 · 201 阅读 · 0 评论 -
Spring源码阅读4-IOC容器-BeanDefinition的载入和解析
在上一节中,我们读源码到Resource的定位部分。 当DefaultResourceLoader返回Resource后,在AbstractBeanDefinitionReader中会对得到的Resource进行读取和解析。 下面是AbstractBeanDefinitionReader中对应的方法: public int loadBeanDefinitions(String location, ...原创 2019-05-16 09:52:12 · 317 阅读 · 0 评论 -
Spring源码阅读5-IOC容器-BeanDefinition的注册
在上一节,我们得到了BeanDefinitionHolder对象,即将Bean的解析和载入完成了,下面将会对这个对象进行注册到容器中。 在前面我们提到过,IOC容器实际上是一个Map, 在这里将得到验证。 我们从前面的分析得到,在DefaultBeanDefinitionDocumentReader类中的processBeanDefinition方法中: protected void proces...原创 2019-05-16 10:00:36 · 283 阅读 · 0 评论 -
Spring源码阅读6-IOC容器-IOC容器的依赖注入
前面我们分析了BeanDefinition的载入和注册过程, 在此过程中,没有对Bean依赖关系的注入。下面我们将分析依赖注入发生的时机。 在spring中,依赖注入发生的时机有2种: 用户第一次向IOC容器索要Bean的时候 配置了Lazy-init属性的Bean将会在初始化的过程中完成依赖的注入。 下面我们先分析下第一种情况。首先回想一下,我们如何获取一个Bean? 我想大家都不陌生,可以...原创 2019-05-16 10:03:07 · 290 阅读 · 0 评论 -
Spring源码阅读7-IOC容器-IOC容器相关特性解析
前面我们分析了Bean的创建和依赖注入,在分析的过程中,有一些代码没有在前面的内容中提及到。下面我们会将关键的部分解析下。 容器的初始化 在Resourse的定位章节中,类AbstractApplicationContext中有如下的代码片段: public void refresh() throws BeansException, IllegalStateException { synchr...原创 2019-05-16 10:05:40 · 293 阅读 · 1 评论