Spring源码解析系列汇总

相信我,你会收藏这篇文章的

本篇文章是这段时间撸出来的Spring源码解析系列文章的汇总,总共包含以下专题。喜欢的同学可以收藏起来以备不时之需

SpringIOC源码解析(上)

  1. 本篇文章搭建了IOC源码解析的demo环境,启动这个环境即可开启阅读Spring源码的第一步
  2. 开始源码阅读时介绍了Spring容器中最经典的容器ClassPathXmlApplicationContext,这个容器是我们在学习Spring的时候最先接触的一个容器,它负责加载当前环境下的xml配置文件
  3. 紧接着介绍了bean工厂BeanFactory以及容器中bean的包装类BeanDefinition
  4. 然后就是Spring对xml配置文件的加载和解析
  5. 当解析的beans标签中各个bean中时将会把这个东东使用BeanDefinition包装后注册到容器中
  6. bean注册完成后会有一些Spring对BeanFactory的扩展点的处理
  7. 当然除了扩展点还有国际化、监听器等操作

SpringIOC源码解析(下)

  1. 开篇先介绍了conversionServiceEmbeddedValueResolver两个比较有意思的东东
  2. 然后就是重点的bean的初始化
  3. 初始化过程中涉及到了singletonprototype两个Scope的bean的处理
  4. 当然,还有令人头疼的循环依赖问题
  5. 创建bean的过程中还有我们熟悉的@Autowired注解注入属性的方式
  6. 接着就是一些清除缓存的操作

SpringIOC源码解析(基于注解)
阅读本篇文章之前建议您首先查看上方两篇文章,因为本篇主要是描述了基于注解的方式和基于xml配置文件方式的异同点

  1. 源码阅读环境的搭建
  2. 首先简单描述了bean容器AnnotationConfigApplicationContext
  3. 然后源码执行的第一步就是关于包扫描一块的东西,也就是我们比较熟悉的注解@ComponentScan
  4. 扫描到了各个带有注解的类之后就是读取类呀、反射呀什么的来加载类
  5. bean已经加载完后就是bean的注册逻辑了
    相比较与之前两篇文章的长篇大论,这篇文章的篇幅要少很多,这主要得益于Spring的设计精妙和代码之优雅

基于注解的SpringAOP源码解析(一)

  1. 源码阅读环境的搭建
  2. @EnableAspectJAutoProxy注解的原理
  3. @EnableAspectJAutoProxy注解又使用到了@Import注解,关于@Import注解的文章下面有地址

基于注解的SpringAOP源码解析(二)

  1. 首先提到了SpringAOP是基于postProcessBeforeInstantiationpostProcessAfterInstantiation两个方法实现的,这篇文章主讲postProcessBeforeInstantiation
  2. 加载增强
  3. 获取所有的增强又对增强进行了一系列的封装

基于注解的SpringAOP源码解析(三)

  1. postProcessAfterInstantiation开篇
  2. 所有的bean在初始化之后都会调用这个方法
  3. 在这里获取到之前加载到的所有的增强,和类的所有方法一一匹配
  4. 当类具有匹配增强的时候就可以为这个类生成具体的代理了

SpringJDBC源码解析

  1. 传统JDBC的使用
  2. 源码阅读环境的搭建
  3. 使用JdbcTemplate以update方法切入
  4. 获取连接加载驱动等方法的封装
  5. 请求参数的封装
  6. 调用驱动提供的方法
  7. query方法的分析,与update仅有返回结果的处理不同其他完全相同

Spring @Import注解源码解析

  1. 三种使用方式
  2. 加载时机
  3. 对不同使用方式的处理方式

Spring事务源码解析(一)

  1. 源码阅读环境的搭建
  2. @EnableTransactionManagement注解的原理解析

Spring事务源码解析(二)获取增强
读到这里的朋友希望您最好对AOP的源码有一定的了解

  1. 增强的获取
  2. @Transactional注解属性的解析

Spring事务源码解析(三)

  1. 创建事务信息(包含事务隔离级别的处理等)
  2. 调用执行链
  3. 异常回滚
  4. 清除事务信息
  5. 提交事务

SpringMVC源码解析(一)

  1. 源码阅读环境的搭建
  2. SpringBoot中SpringMVC自动配置原理
  3. DispatcherServlet的初始化逻辑
  4. web容器的初始化

SpringMVC源码解析(二)

  1. 获取对应的handler
  2. 获取对应的handlerAdapter
  3. 调用handle
  4. 执行拦截器
  5. 处理返回结果

源码阅读环境

您可能注意到上方文章中包含了很多源码阅读环境的搭建,当真正自己要去阅读时搭建起来还是比较浪费时间的。所以我把这些工作都替您做好了,您可以直接访问下方链接获取
https://github.com/shiyujun/spring-framework

后续规划

  1. Spring常用扩展点的应用场景
  2. SpringBoot源码解析
  3. SpringCloud常用组件源码解析
  4. MyBatis、druid源码解析
  5. 阿里开源Nacos、Sentinel、Seata源码解析
  6. K8S、Istio源码解析
  7. 等等

交流群
为了方便大家的交流学习,特意搞了个技术交流群,有兴趣的同学可以扫描下方二维码进群。如二维码过期可在公众号添加小编的微信发送暗号进群


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容

  • 本来是准备看一看Spring源码的。然后在知乎上看到来一个帖子,说有一群**自己连Spring官方文档都没有完全读...
    此鱼不得水阅读 6,934评论 4 21
  • 什么是spring? Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但...
    码记阅读 414评论 0 2
  • 参考W3C Spring教程 Spring致力于J2EE应用的各种解决方案,而不仅仅专注于某一层解决方案。可以说S...
    王侦阅读 1,171评论 0 6
  • 1.什么是spring?Spring是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但...
    壹点零阅读 427评论 0 4
  • 第一期超级记忆线下课程总结 2019年5月25、26日,在中国最前沿的城市之一——深圳,开启了超级记忆的学习,更开...
    z飞鸟与鱼h阅读 266评论 0 2