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 的读取和载入了。 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 容器中咯。