Spring可太牛啦|如何学Spring的源码

首先在文章的开头,我们需要再次明确一下Spring框架到底是个啥?

  1. Spring框架是一个读取、保存、使用Bean的容器
  2. Spring框架提供了依赖注入功能
  3. Spring框架提供了AOP动态代理功能
  4. 。。。。。。

自顶向下,关注当前的逻辑来学习

Spring中包含了大量的模板方法设计模式,我们不妨顺着这个模板方法的思路

从上向下进行分析,从大局到细枝末节。

我们大可把Spring(这里不包括Web模块)拆分为几块:

  1. IoC容器的初始化
  2. Bean的实例化
  3. Application的支持
  4. AOP处理

这四点有什么关系呢?从其中文名可以了解到一些关系,我在这里列几条(本人也不甚精通,理解略浅)

  • IoC容器是整个系统的核心与基石。保管了整个系统的Bean处理
  • Bean的实例化与注册不同,实例化可以很晚(惰性)。
  • Application是对IoC容器的一次扩展与封装
  • AOP为Spring的体系提供了便利的扩展方式

我们大致可以归纳出一个比较容易理解的学习路线:

容器->Bean->Application->AOP

四个部分大致的内容

  1. 其中容器部分为BeanFactory家族、其中的实现类为DefaultListableBeanFactory与XmlBeanFactory,我们在这里要接触Bean的定义文件是如何被Spring抽象、读取的,并了解Spring是如何加载各个Bean。
  2. Bean的实例化部分中,我们会了解Bean的实例化的过程,会遇到日常使用的一些行为的实现,其中最绕的地方,莫过于大名鼎鼎的”三级缓存“,若在此学习遇到迷茫,可以画一个示意图出来(切记不要太细节了,亲测有效),需要提到的是,为了理解工厂池(也就是第三级缓存),我们需要对AOP有个模糊的印象。
  3. Application部分中,我们将了解ApplicationContext对BeanFactory的扩展
  4. AOP模块会了解AOP是如何织入我们的类的。

最后要叮嘱各位,debug源码, 千万不要一行一行的debug,Spring的大量方法看名字就能懂是什么功能的,我们要着眼于目前要解决的问题!!

那么,祝各位春招一路顺风~

可low兄(恬不知耻)春招加油!

你可能感兴趣的:(春招冲关-Java后端,Spring,spring,java)