From abfd9696d7363090ef190a372f9e74f9218fff2c Mon Sep 17 00:00:00 2001 From: AmyliaY <35298395+AmyliaY@users.noreply.github.com> Date: Thu, 12 Dec 2019 09:50:03 +0800 Subject: [PATCH 1/2] =?UTF-8?q?Update=201=E3=80=81BeanDefinition=E7=9A=84?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E5=AE=9A=E4=BD=8D=E8=BF=87=E7=A8=8B.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 格式调整 --- docs/Spring/IoC/1、BeanDefinition的资源定位过程.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/Spring/IoC/1、BeanDefinition的资源定位过程.md b/docs/Spring/IoC/1、BeanDefinition的资源定位过程.md index 79be178..6d6ed1b 100644 --- a/docs/Spring/IoC/1、BeanDefinition的资源定位过程.md +++ b/docs/Spring/IoC/1、BeanDefinition的资源定位过程.md @@ -1,8 +1,12 @@ ## 前言 之前一直想系统的拜读一下 spring 的源码,看看它到底是如何吸引身边的大神们对它的设计赞不绝口,虽然每天工作很忙,每天下班后总感觉脑子内存溢出,想去放松一下,但总是以此为借口,恐怕会一直拖下去。所以每天下班虽然有些疲惫,但还是按住自己啃下这块硬骨头。 + spring 源码这种东西真的是一回生二回熟,第一遍会被各种设计模式和繁杂的方法调用搞得晕头转向,不知道这个方法调用的是哪个父类的实现,另一个方法又调的是哪个子类的实现,但当你耐下心来多走几遍,会发现越看越熟练,每次都能 get 到新的点。 + 另外,对于第一次看 spring 源码的同学,建议先在 B 站上搜索相关视频看一下,然后再结合计文柯老师的《spring 技术内幕》深入理解,最后再输出自己的理解加强印象。 + 首先对于我们新手来说,还是从我们最常用的两个 IoC 容器开始分析,这次我们先分析 FileSystemXmlApplicationContext 这个 IoC 容器的具体实现,ClassPathXmlApplicationContext 留着下次讲解。 + (PS:可以结合我 GitHub 上对 spring 框架源码的翻译注解一起看,会更有助于各位开发姥爷的理解。 地址: spring-beans https://github.com/AmyliaY/spring-beans-reading @@ -345,4 +349,4 @@ FileSystemXmlApplicationContext 从上层体系的各抽象类中继承了大量 return new FileSystemResource(path); } ``` -至此,我们可以看到,FileSystemXmlApplicationContext 的 getResourceByPath() 方法返回了一个 FileSystemResource 对象,接下来 spring 就可以对这个对象进行相关的 I/O 操作,进行 BeanDefinition 的读取和载入了。 \ No newline at end of file +至此,我们可以看到,FileSystemXmlApplicationContext 的 getResourceByPath() 方法返回了一个 FileSystemResource 对象,接下来 spring 就可以对这个对象进行相关的 I/O 操作,进行 BeanDefinition 的读取和载入了。 From 798f7846138cb20bb95c97411acb186d7e7cd826 Mon Sep 17 00:00:00 2001 From: AmyliaY <35298395+AmyliaY@users.noreply.github.com> Date: Thu, 12 Dec 2019 09:51:01 +0800 Subject: [PATCH 2/2] =?UTF-8?q?Update=202=E3=80=81=E5=B0=86bean=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E5=B0=81=E8=A3=85=E6=88=90BeanDefinition.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 格式调整 --- docs/Spring/IoC/2、将bean解析封装成BeanDefinition.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/Spring/IoC/2、将bean解析封装成BeanDefinition.md b/docs/Spring/IoC/2、将bean解析封装成BeanDefinition.md index 813e6da..f46538f 100644 --- a/docs/Spring/IoC/2、将bean解析封装成BeanDefinition.md +++ b/docs/Spring/IoC/2、将bean解析封装成BeanDefinition.md @@ -1,4 +1,5 @@ 接着上一篇的 BeanDefinition 资源定位开始讲。Spring IoC 容器 BeanDefinition 解析过程就是把用户在配置文件中定义好的 bean,解析并封装成容器可以装载的 BeanDefinition,BeanDefinition 是 spring 定义的基本数据结构,也是为了方便对 bean 进行管理和操作。 + (PS:可以结合我 GitHub 上对 spring 框架源码的阅读及个人理解一起看,会更有助于各位开发大佬理解。 spring-beans https://github.com/AmyliaY/spring-beans-reading spring-context https://github.com/AmyliaY/spring-context-reading @@ -884,4 +885,4 @@ spring-context https://github.com/AmyliaY/spring-context-reading } } ``` -经过这样逐层地解析,我们在配置文件中定义的 Bean 就被整个解析成了可以被 IoC 容器装载和使用的 BeanDefinition,这种数据结构可以让 IoC 容器执行索引、查询等操作。经过上述解析得到的 BeanDefinition,接下来我们就可以将它注册到 IoC 容器中咯。 \ No newline at end of file +经过这样逐层地解析,我们在配置文件中定义的 Bean 就被整个解析成了可以被 IoC 容器装载和使用的 BeanDefinition,这种数据结构可以让 IoC 容器执行索引、查询等操作。经过上述解析得到的 BeanDefinition,接下来我们就可以将它注册到 IoC 容器中咯。