本文整理Spring的基本概念。
前言
先上链接剑指Java自研框架,决胜Spring源码
Spring学习中我也看了这个视频,这个链接是关于该课程基本概念的整理。直接引用,不重复造轮子。
后边就补充一些东西,以及自己对Spring学习的浅见。
一、补充
课程中还提到了Spring发展的四阶段
- core,security,Data
- Spring Boot
- Spring Cloud
- Spring Cloud DataFlow(下阶段)
容器所属
BeanFactory是Beans模块的类
ApplicationContext是Context模块的类
BF是延时加载的,AC是直接加载并完成注入
视频中提到了这句话,前边文章没有注意到。
这里我认为讲BF是延时加载,主要是讲要主动调用getBean()才会对Bean初始化。
SpEL
表达式语言,在运行时查询和操作对象。
讲真的我还没用过,这个感觉挺有意思。
二、学习反思
这部分纯属个人瞎扯,我学习源码差不多一年多了,断断续续看了一堆视频,翻来覆去看好多遍,感觉到现在也不是特别理解。
但是大概的Spring流程能顺一遍,面试能跟面试官聊聊也就够了。其实初学者学Spring源码,就是为了面试,心态要调整,不要死扣,要抓住主线,你要想,这么复杂的代码,你肯定背不下来,你背不下来,面试官也不行啊。
我以前的学习习惯是开2倍速,直接过一遍,觉得重点的就记下笔记,但是对Spring来讲,这个学习习惯直接失效。
因为Spring的源码太深了,调用链深,而且大量的后置处理器使代码解耦。这对开发者来讲必然是有意义的,但是一定程度对源码阅读者的打击是毁灭性的。试想一下,Spring将大量的实现交给子类(模板方法模式),子类又要调用父类,每个方法的实现类可能一屏幕都装不下。看视频的时候有一个地方没跟上,后边你都看不懂了。学高数的时候有这种感觉吧?
我后来就老老实实用原速看,然后做思维导图。关键代码记下来,后边再看不迷路。我的思维导图缩小到看不清字,一屏都放不下。所以这是个体力活,慢慢熬吧。