Spring源码应该怎么学?

很多小伙伴知道松哥最近在录 Spring 源码视频,也有小伙伴说能不能授之以渔,我也仔细想过这个问题,今天来和大家聊一聊这个话题。

关注松哥时间久的小伙伴可能还记得我在 2020 年的时候其实写过 Spring 源码解析的文章,但是最终却无疾而终,烂尾了。为什么当时没有坚持把一个系列写完呢?

这是当年写的文章,前后一共十篇左右,都发在公众号上了

现在总结起来,当时这个系列没有坚持写完的原因就是方式不对!当时我想的是,就从配置文件/配置类的加载开始,一步一步梳理 Spring 容器的初始化流程,最后打通任督二脉融会贯通。然而在开始写之后,却发现了很多问题。整个 Spring 容器初始化的过程中,涉及到的小细节非常多,任何一个小细节拉出来,都能写好几篇文章去讲,为了让大家把各个细节理解到位,我需要不停的从主线切换出来,去做支线任务,然而支线任务可能也会分出来支线任务,这样到最后,摊子越铺越大,刚好当时正在写《深入浅出 Spring Security》一书,到了交稿的前夕,也比较忙,Spring 源码的内容就搁置了,一搁就是三年。

今年当我想重新拾起 Spring 源码这个系列的时候,我决定换一个思路。

Spring 经过接近二十年的发展,里边的实现细节现在非常多,很多小伙伴掌握的都是工作中特别常见的用法,而这些,估计仅有 Spring 所有功能的 1/3,这就导致大家在阅读 Spring 源码的时候经常会感觉比较懵,因为不知道 Spring 还能这么用,就不理解为什么源码这么写。

所以这一次我决定就从 Spring 的用法开始,先就某一个具体的使用细节,和大家分析其源码,这样,在不断的功能细节分析过程中,大家对 Spring 源码也会逐渐熟悉,最后,再来个提纲挈领的分析,把所有内容串起来。

就比如前段时间我写的关于循环依赖的文章:

首先我先从非代码的层面介绍什么是循环依赖,以及循环依赖的解决思路:

然后,我再指出这种循环依赖解决思路可能存在的不足:

再给出为什么 @Lazy 注解就能破解死循环:

最后,所有道理都明白了,所有细节的源码都搞清楚了之后,再来一个整体的源码分析:

这样一套流程下来,循序渐进,相信大家对于循环依赖的理解就相当到位了。当然,这并不是说就结束了,上面这些内容又是将来 IoC 容器中 Bean 初始化的前置知识。

通过这种先从用法入手,从一个小的知识点开始源码分析,再逐步扩大分析范围,直到最终把整个知识点的源码捋清楚,这种方式相比于三年前的源码分析方式,效果应该要好很多。我的这种讲解的方式,也得到了小伙伴们的认可,这也给了我自信,就按照这样的方式坚持下去。

如果小伙伴们想要自己去探索 Spring 源码,我也建议采用这种方式来~

最后再来和大家说一说我最近在录的 Spring 源码视频。

为什么要做这个视频,因为我觉得 Spring 源码对于大家非常重要,从初级程序员进阶到高级,Spring 源码算是一个必备技能,不是说懂 Spring 源码你就是高级开发了,但是如果连 Spring 源码都不清楚,你是否有底气告诉别人自己是一个高级开发?所以把 Spring 理解到位,是大家打怪升级的必经之路。

学习 Spring 源码,不仅仅是学习 Spring,也是学习优秀框架的设计思想,例如我们天天背 23 种设计模式,但是到了工作中很多人不知道该如何使用,那么不妨来看看 Spring 源码,看看 Spring 源码是如何使用设计模式的。

视频目前已经处于更新中了,现在已经更了 53 集约 12 个小时了。

这次的视频我提供了语雀笔记,所有的视频都有对应的笔记,小伙伴们在学习的过程中,如果有不懂的地方或者理解不到位的地方,可以直接在语雀文档下评论,我都会回复大家,典型问题我会重新录视频讲解,这样大家最终拿到手的不仅仅是一套视频,还有一套资料翔实的文档。

由于现在视频刚刚开始更新,所以现在上车还是比较实惠的,5 折 199 上车!买过 vhr 和 TienChin 的小伙伴应该都知道,后面随着录制内容越来越多,购买人数变多,优惠力度也会降低。

每一次做课程我都会认认真真去对待,如果没有想好怎么做,我是不会贸然推出来相应的课程的,因为来自小伙伴们的信任太珍贵了。最近有个小伙伴去年问我有无 Spring 高级课程,当时还没有,而且当时我也没想到今年会出 Spring 源码课程,小伙伴说会等,我是真没想到他真的等了一年,还好今年总算把课程出了,没让小伙伴失望!

说这么多是想告诉大家,松哥的课程还是值得的,不然也不会有这么多小伙伴选择二次上车啦:

好啦,最后再统一回答大家几个关于视频的问题。

Q1:视频放在哪里,怎么播放?

视频放在百度网盘上,下载后使用专用播放器授权播放,专用播放器一机一码一人一码。至于小伙伴们推荐的阿里网盘等,由于空间、分享文件类型等限制,并无法用在加密视频分发中。

Q2:视频为什么不支持在线播放?

在线播放的话,一般都是和平台合作,但是国内大家所熟知的平台如慕课网、csdn 学院等,平台抽成基本都是 4 成起,松哥之前还合作了一个平台拿 6 成(也就是假如 100 块钱的课,平台拿走 60)。这样的分成比例无形中会推高课程的价格,现在我自己分发,所以才能做到低价。同时为了防止视频泄露,松哥对视频做了加密处理,这样可以确保大家不会在其他地方看到一模一样的免费视频,加密后的视频只能使用专用播放器播放,因此不支持在线播放。

Q3:视频可以试看吗?

其实我最近在公号发的视频,大家都可以当作试看视频。

Q4:可以砍价吗?

不可以,这个价格已经很便宜了,没法砍了(悄悄告诉大家,从 vhr 到 tienchin,暂时没有人砍价成功过),另外就是松哥是没有客服运营这些的,你加的微信就是我,咱都是纯粹的技术人,老实说我并不懂砍价,但是我会用沉默代表拒绝。

Q5:视频多久更新完毕?

我会争取在一个月之内更完第一部分,两个月之内更完第二部分。

Q6:这套视频适合哪些人看?

学习这套视频,有 Spring 基础更佳,没有也可以。对于有 Spring 基础的小伙伴来说,我会保证你学到一些之前从未了解到的 Spring 玩法,对于没有 Spring 基础的小伙伴来说,这套视频从 0 开始的,那一样也适合你。

Q7:看视频有问题可以问吗?

购买视频后我会统一拉一个微信群,视频有问题可以在群里交流。

Q8:这套视频我能学到啥?

从 Spring 基础用法到源码理解统统搞定。如果你还没接触过 Spring,这套视频从基础用法到源码分析,可以让大家一步到位掌握 Spring;如果已经有一些 Spring 使用经验了,那么这套视频可以帮你进一步提升,掌握 Spring 原理。不过需要提醒大家的是,这套视频不包括 SpringMVC 相关的内容。


好啦,5 折 199 抄底就在今天啦!

P.s.:可能有小伙伴加了松哥多个微信,其实没有必要重复添加,任意一个都能找到我。当然,如果你还没有松哥微信,扫码加微信,备注 spring,发红包 199 上车吧(买过 vhr 或者 tienchin 的小伙伴可在此基础上再优惠 ¥30 哦)~

# Spring

喜欢这篇文章吗?扫码关注公众号【江南一点雨】【江南一点雨】专注于 SPRING BOOT+微服务以及前后端分离技术,每天推送原创技术干货,关注后回复 JAVA,领取松哥为你精心准备的 JAVA 干货!

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×