首先在文章的开头,我们需要再次明确一下Spring框架到底是个啥?
- Spring框架是一个读取、保存、使用Bean的容器
- Spring框架提供了依赖注入功能
- Spring框架提供了AOP动态代理功能
- 。。。。。。
自顶向下,关注当前的逻辑来学习
Spring中包含了大量的模板方法设计模式,我们不妨顺着这个模板方法的思路
从上向下进行分析,从大局到细枝末节。
我们大可把Spring(这里不包括Web模块)拆分为几块:
- IoC容器的初始化
- Bean的实例化
- Application的支持
- AOP处理
这四点有什么关系呢?从其中文名可以了解到一些关系,我在这里列几条(本人也不甚精通,理解略浅)
- IoC容器是整个系统的核心与基石。保管了整个系统的Bean处理
- Bean的实例化与注册不同,实例化可以很晚(惰性)。
- Application是对IoC容器的一次扩展与封装
- AOP为Spring的体系提供了便利的扩展方式
我们大致可以归纳出一个比较容易理解的学习路线:
容器->Bean->Application->AOP
四个部分大致的内容
- 其中容器部分为BeanFactory家族、其中的实现类为DefaultListableBeanFactory与XmlBeanFactory,我们在这里要接触Bean的定义文件是如何被Spring抽象、读取的,并了解Spring是如何加载各个Bean。
- Bean的实例化部分中,我们会了解Bean的实例化的过程,会遇到日常使用的一些行为的实现,其中最绕的地方,莫过于大名鼎鼎的”三级缓存“,若在此学习遇到迷茫,可以画一个示意图出来(切记不要太细节了,亲测有效),需要提到的是,为了理解工厂池(也就是第三级缓存),我们需要对AOP有个模糊的印象。
- Application部分中,我们将了解ApplicationContext对BeanFactory的扩展
- AOP模块会了解AOP是如何织入我们的类的。
最后要叮嘱各位,debug源码, 千万不要一行一行的debug,Spring的大量方法看名字就能懂是什么功能的,我们要着眼于目前要解决的问题!!
那么,祝各位春招一路顺风~
可low兄(恬不知耻)春招加油!