Spring源码学习

不知不觉已经工作快两年,期间也阅读过些许源代码,无奈未进行系统的归纳和总结,过一段时间就忘的一干二净。记得有个前辈说过,人类对于一些无序的东西很容易就忘了,现在看来很是有道理,于是便想借用博客的方式再学习一次。学习源码的过程是坎坷的,主要是因为源码的代码量都很大,没有一个清晰的目标和一个主要的学习线路,很容易就会钻进代码的森林里面找不到北,这里看一点,那里看一点,零零散散连不成一条完整的线,其结果就是看完之后一段时间全都忘光,收获甚微。那么在进入源码之前,先分析好主线,所谓磨刀不误砍柴工嘛,然后跟着这条主线顺藤摸瓜,你就会发现学习源码是一件愉快又上瘾的事。首先分析下Spring源码学习的主线。
Spring整体架构如下图所示,相信用过Spring的人都比较熟悉。
Spring整体架构
如图所示,IOC容器是整个Spring框架的核心基础部分,接下来便对IOC容器进行分析。 IOC中有个著名的概念,叫做控制反转,也有人叫依赖反转。所谓依赖就是对象间的引用关系,按照正常的编程习惯,对象间的依赖和引用关系都是交给某个具体的对象来进行管理的。但是这样就会有一个问题,试想如果一个项目很大的话,里面的对象数量成千上万,他们之间的引用关系将会变得非常复杂,管理这些依赖关系将会非常困难。而且对象之间的耦合性也很高。这时候如果把这些复杂的依赖关系交给IOC容器去管理,也就是反转,那将会极大的简化项目设计的复杂性。所以IOC容器的作用就是管理对象之间的引用关系。
接下来我们就来看看这个IOC容器是如何设计的。(主线来了)
IOC容器主要有两个系列,BeanFactory和ApplicationContext,工作中我们一般使用ApplicationContext。
在使用IOC容器之前,我们需要构造一个IOC容器。
构造一个IOC容器需要如下几个步骤:
第一步:资源的定位。所谓资源就是指Spring里众多的XML配置文件,要获取到配置文件里面的信息,首先是要找到它。
第二步:加载和解析资源文件。XML文件里面定义的一些节点,和Spring里面定义的数据结构不匹配,那么就需要按照Spring的解析规则将XML解析成Spring需要的。
第三步:将解析完的数据结构注册到IOC容器中。Spring中内部的数据结构叫BeanDefinition。
经过以上三个步骤之后,IOC容器已经构造好,但是还是不能被直接使用。BeanDefinition只是配置文件里的配置在IOC中建立的一个映射,对于IOC容器来说最重要的依赖关系都还没有注入呢,相当于光有一个壳,内容还没有填充。
这里又有个Spring中重要的概念,叫做依赖注入。依赖的意思上文中有提到过吧,就是对象的引用关系嘛,注入是个动词,个人理解为设置,那依赖注入的意思不就是设置对象的引用关系了哇。
接下来这个过程是容器的实例化。容器的实例化只有一步,就是依赖注入。
完成IOC容器的构造和实例化之后,完整的IOC就建立好了。主线分析好了,接下来便可以顺藤摸瓜的学习源码了哇。未完待续。。。。。。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值