Spring 源码这样学!

经过差不多 5 个月的录制,Spring 源码视频教程终于杀青啦~

这套视频教程基于目前最新的 Spring6 录制,一共有 204 集约 40 个小时,从 Spring 基本用法讲起,一直讲到源码分析(文末有视频目录)。

Spring 算是我们 Java 开发领域中一个最最基本的框架了,像是开发领域的水电气一样,这个咱们做 Java 开发的小伙伴都懂,我也就不多说重要性了。

很多小伙伴调侃自己是 CV 战士,面向搜索引擎编程,其实我很理解这种状态,因为我刚毕业的时候在公司敲代码也是这种状态,遇到错误,网上搜一下,别人说怎么怎么弄,我就照着做,弄完一看,可以运行了,好了,这事就过了,至于为什么,不知道。后来当我慢慢自己去看一些源码的时候,掌握一些源码分析技巧的时候,再次遇到问题的时候,我尽量不去搜索,而是尝试自己分析,刚开始的时候这样解决问题虽然慢,但是解决问题之后充满了成就感,这种成就感会给我们信心,每次解决一个难点的时候,我就在想,这不得给我加薪。时间久了我会特别痴迷于这种成就感,搜索得来的答案,虽然问题解决了,但是感觉自己就像是一个木得感情的代码机器,通过自己思考解决的问题,则能让自己信心爆棚。

希望小伙伴们都能养成这样思考的习惯~

这次的 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 哦)~

以下是完整视频目录:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
├── 01.基础用法
│   ├── 01.IoC基础
│   │   ├── 01.Spring框架介绍-核心容器.mp4
│   │   ├── 02.Spring框架介绍-数据访问和通信.mp4
│   │   ├── 03.Spring框架介绍-Web模块.mp4
│   │   ├── 04.Spring框架介绍-AOP和测试.mp4
│   │   ├── 05.什么是IoC.mp4
│   │   ├── 06.自定义一个简单的IoC.mp4
│   │   ├── 07.向Spring容器注册Bean.mp4
│   │   ├── 08.从Spring容器获取Bean.mp4
│   │   ├── 09.id属性和name属性.mp4
│   │   ├── 10.基本属性注入.mp4
│   │   ├── 11.复杂属性注入.mp4
│   │   ├── 12.构造器注入.mp4
│   │   ├── 13.p名称空间注入.mp4
│   │   ├── 14.属性自动注入.mp4
│   │   ├── 15.配置文件加载.mp4
│   │   ├── 16.Java代码配置IoC.mp4
│   │   ├── 17.BeanName自动生成原理.mp4
│   │   ├── 18.id和name属性处理原理.mp4
│   │   ├── 19.Bean 的作用域.mp4
│   │   ├── 20.singleton 和 prototype 的区别.mp4
│   │   ├── 21.条件注解详解.mp4
│   │   ├── 22.多环境切换.mp4
│   │   ├── 23.Profile原理分析.mp4
│   │   ├── 24.自定义Profile.mp4
│   │   ├── 25.Bean的依赖关系.mp4
│   │   ├── 26.FactoryBean用法.mp4
│   │   ├── 27.抽取Bean的公共属性.mp4
│   │   ├── 28.父子容器问题.mp4
│   │   ├── 29.@Configuration注解的作用.mp4
│   │   ├── 30.Bean自动扫描.mp4
│   │   └── 31.属性值注入.mp4
│   ├── 02.AOP基础
│   │   ├── 01.静态代理.mp4
│   │   ├── 02.编译时增强和运行时增强.mp4
│   │   ├── 03.编译时增强.mp4
│   │   ├── 04.运行时增强-JDK.mp4
│   │   ├── 05.运行时增强-CGLIB.mp4
│   │   ├── 06.什么是Spring AOP.mp4
│   │   ├── 07.SpringAOP和AspectJAOP.mp4
│   │   ├── 08.Spring AOP核心概念.mp4
│   │   ├── 09.Spring AOP入门用法.mp4
│   │   ├── 10.五种通知.mp4
│   │   ├── 11.Java代码配置AOP.mp4
│   │   ├── 12.SpringAOP底层代理.mp4
│   │   └── 13.通过注解定义AOP拦截规则.mp4
│   ├── 03.JdbcTemplate
│   │   ├── 01.JdbcTemplate基本操作.mp4
│   │   ├── 02.增删改查.mp4
│   │   └── 03.通过变量名传递参数.mp4
│   └── 04.事务
│   ├── 01.事务简介.mp4
│   ├── 02.编程式事务.mp4
│   ├── 03.XML配置声明式事务.mp4
│   ├── 04.Java配置声明式事务.mp4
│   ├── 05.Java+XML配置声明式事务.mp4
│   ├── 06.自定义事务注解.mp4
│   ├── 07.事务属性-隔离级别.mp4
│   ├── 08.事务属性-传播性.mp4
│   ├── 09.事务属性-传播性2.mp4
│   ├── 10.事务属性-回滚规则.mp4
│   ├── 11.事务属性-只读事务.mp4
│   ├── 12.事务属性-超时时间.mp4
│   └── 13.事务失效的场景.mp4
└── 02.进阶用法
├── 001.通过name属性定义别名.mp4
├── 002.通过alias标签定义别名.mp4
├── 003.别名处理接口AliasRegistry.mp4
├── 004.aliasMap变量.mp4
├── 005.allowAliasOverriding.mp4
├── 006.hasAlias.mp4
├── 007.removeAlias和isAlias.mp4
├── 008.getAliases.mp4
├── 009.checkForAliasCircle.mp4
├── 010.canonicalName.mp4
├── 011.registerAlias.mp4
├── 012.resolveAliases.mp4
├── 013.name属性解析原理.mp4
├── 014.alias标签解析.mp4
├── 015.DefaultListableBeanFactory.mp4
├── 016.StaticListableBeanFactory.mp4
├── 017.SimpleJndiBeanFactory.mp4
├── 018.ApplicationContext.mp4
├── 019.FactoryBean&SmartFactoryBean.mp4
├── 020.FactoryBean处理思路.mp4
├── 021.Bean提前加载流程分析.mp4
├── 022.isFactoryBean方法分析.mp4
├── 023.getBean中&的处理逻辑.mp4
├── 024.BeanDefinition简介.mp4
├── 025.RootBeanDefinition.mp4
├── 026.ChildBeanDefinition.mp4
├── 027.GenericBeanDefinition.mp4
├── 028.AnnotatedGenericBeanDefinition.mp4
├── 029.ScannedGenericBeanDefinition.mp4
├── 030.ConfigurationClassBeanDefinition.mp4
├── 031.CreateFromClassBeanDefinition.mp4
├── 032.ClassDerivedBeanDefinition.mp4
├── 033.加载XML配置的两种方式.mp4
├── 034.BeanDefinitionReader.mp4
├── 035.PropertiesBeanDefinitionReader.mp4
├── 036.XmlBeanDefinitionReader.mp4
├── 037.配置类解析为BeanDefinition.mp4
├── 038.@Scope注解高级用法.mp4
├── 039.编程式AOP.mp4
├── 040.编程式AOP之target方法分析.mp4
├── 041.TargetSource体系结构.mp4
├── 042.SimpleBeanTargetSource.mp4
├── 043.自定义TargetSource.mp4
├── 044.引介增强.mp4
├── 045.启动类上的@Scope注解代理原理.mp4
├── 046.常规类上的@Scope注解.mp4
├── 047.Java配置中的@Scope代理.mp4
├── 048.导入配置类上的@Scope注解.mp4
├── 049.@Configuration注解存在的意义是什么.mp4
├── 050.@Configuration-Vs-@Component.mp4
├── 051.@Configuration原理分析.mp4
├── 052.@Configuration的两种模式Full和Lite.mp4
├── 053.详细演示Full和Lite模式.mp4
├── 054.Full模式和Lite模式特点总结.mp4
├── 055.@Configuration注解解析源码分析.mp4
├── 056.@Configuration注解解析源码分析-2.mp4
├── 057.条件注解高级用法.mp4
├── 058.条件注解高级用法补充.mp4
├── 059.条件注解原理分析.mp4
├── 060.beanName自动生成场景.mp4
├── 061.beanName生成器分析.mp4
├── 062.AnnotationBeanNameGenerator.mp4
├── 063.BeanFactoryPostProcessor和BeanPostProcessor.mp4
├── 064.BeanFactoryPostProcessor案例.mp4
├── 065.BeanFactoryPostProcessor典型应用场景.mp4
├── 066.Properties加载原理分析.mp4
├── 067.BeanDefinitionRegistryPostProcessor.mp4
├── 068.BeanFactoryPostProcessor作用时机分析.mp4
├── 069.BeanPostProcessor接口分析.mp4
├── 070.BeanPostProcessor实践.mp4
├── 071.BeanPostProcessor实现AOP.mp4
├── 072.MergedBeanDefinitionPostProcessor.mp4
├── 073.BeanPostProcessor原理分析.mp4
├── 074.合并BeanDefinition原理分析.mp4
├── 075.合并BeanDefinition源码分析.mp4
├── 076.父子容器原理分析.mp4
├── 077.事件基本用法.mp4
├── 078.事件是阻塞还是非阻塞.mp4
├── 079.手动注册事件监听器.mp4
├── 080.事件三大组件.mp4
├── 081.Java类定义的事件监听器.mp4
├── 082.Java类定义的事件监听器-补充.mp4
├── 083.通过Java注解定义的事件监听器.mp4
├── 084.ApplicationEventPublisher.mp4
├── 085.ApplicationEventMulticaster.mp4
├── 086.Spring事件补充.mp4
├── 087.Java国际化.mp4
├── 088.Spring国际化.mp4
├── 089.MessageSource层级关系.mp4
├── 090.getMessage方法原理分析.mp4
├── 091.解析无参的key.mp4
├── 092.解析有参key.mp4
├── 093.Lifecycle基本用法.mp4
├── 094.SmartLifecycle基本用法.mp4
├── 095.Lifecycle中start方法执行原理.mp4
├── 096.Lifecycle中stop方法执行原理.mp4
├── 097.编程式AOP.mp4
├── 098.动态代理对象创建流程.mp4
├── 099.JDK和CGLIB动态代理分析.mp4
├── 100.Advisor详解.mp4
├── 101.自定义切面对象Advisor.mp4
├── 102.重载方法拦截规则.mp4
├── 103.拦截所有方法.mp4
├── 104.默认配置的Pointcut对象.mp4
├── 105.Pointcut经典写法.mp4
├── 106.Pointcut分类.mp4
├── 107.StaticMethodMatcherPointcut.mp4
├── 108.StaticMethodMatcherPointcut-2.mp4
├── 109.DynamicMethodMatcherPointcut.mp4
├── 110.AnnotationMatchingPointcut.mp4
├── 111.ControlFlowPointcut.mp4
├── 112.ComposablePointcut.mp4
├── 113.提前返回Bean的机会.mp4
├── 114.提前AOP的机会.mp4
├── 115.理解两个关键变量.mp4
├── 116.特殊的beanName.mp4
├── 117.自定义TargetSourceCreator.mp4
├── 118.提前AOP实践.mp4
├── 119.AOP创建的契机.mp4
├── 120.AOP对象生成整体思路.mp4
├── 121.AOP对象创建详细流程分析.mp4
├── 122.Bean的获取思路.mp4
├── 123.getBean方法整体思路分析.mp4
├── 124.从三级缓存中加载Bean.mp4
├── 125.从parent中加载Bean.mp4
├── 126.检查@DependOn注解.mp4
├── 127.不同Scope获取Bean实例.mp4
├── 128.生成的Bean类型检查.mp4
├── 129.createBean方法分析.mp4
├── 130.doCreateBean-1.mp4
├── 131.循环依赖-二级缓存.mp4
├── 132.循环依赖-三级缓存.mp4
├── 133.循环依赖-三级缓存-补充.mp4
├── 134.循环依赖源码分析-1.mp4
├── 135.循环依赖源码分析-2.mp4
├── 136.循环依赖源码分析-3.mp4
├── 137.Bean的生命周期-1.mp4
├── 138.Bean的生命周期-2.mp4
├── 139.Bean的生命周期-3.mp4
├── 140.Bean的实例化-1.mp4
├── 141.Bean的实例化-2.mp4
├── 142.Bean的属性注入.mp4
├── 143.getBean方法.mp4
└── 144.小结.mp4
# Spring

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

评论

Your browser is out-of-date!

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

×