全面解读Spring框架源代码合集指南
相信我,你会收藏这篇文章的
本篇文章是这段时间撸出来的Spring源码解析系列文章的汇总,总共包含以下专题。喜欢的同学可以收藏起来以备不时之需
SpringIOC源码解析(上)
- 本篇文章搭建了IOC源码解析的demo环境,启动这个环境即可开启阅读Spring源码的第一步
- 开始源码阅读时介绍了Spring容器中最经典的容器
ClassPathXmlApplicationContext
,这个容器是我们在学习Spring的时候最先接触的一个容器,它负责加载当前环境下的xml配置文件 - 紧接着介绍了bean工厂
BeanFactory
以及容器中bean的包装类BeanDefinition
- 然后就是Spring对xml配置文件的加载和解析
- 当解析的
beans
标签中各个bean
中时将会把这个东东使用BeanDefinition
包装后注册到容器中 - 当
bean
注册完成后会有一些Spring对BeanFactory
的扩展点的处理 - 当然除了扩展点还有国际化、监听器等操作
SpringIOC源码解析(下)
- 开篇先介绍了
conversionService
和EmbeddedValueResolver
两个比较有意思的东东 - 然后就是重点的
bean
的初始化 - 初始化过程中涉及到了
singleton
和prototype
两个Scope的bean
的处理 - 当然,还有令人头疼的循环依赖问题
- 创建bean的过程中还有我们熟悉的
@Autowired
注解注入属性的方式 - 接着就是一些清除缓存的操作
SpringIOC源码解析(基于注解)
阅读本篇文章之前建议您首先查看上方两篇文章,因为本篇主要是描述了基于注解的方式和基于xml配置文件方式的异同点
- 源码阅读环境的搭建
- 首先简单描述了
bean
容器AnnotationConfigApplicationContext
- 然后源码执行的第一步就是关于包扫描一块的东西,也就是我们比较熟悉的注解
@ComponentScan
- 扫描到了各个带有注解的类之后就是读取类呀、反射呀什么的来加载类
- 当
bean
已经加载完后就是bean
的注册逻辑了
相比较与之前两篇文章的长篇大论,这篇文章的篇幅要少很多,这主要得益于Spring的设计精妙和代码之优雅
基于注解的SpringAOP源码解析(一)
- 源码阅读环境的搭建
-
@EnableAspectJAutoProxy
注解的原理 -
@EnableAspectJAutoProxy
注解又使用到了@Import
注解,关于@Import
注解的文章下面有地址
基于注解的SpringAOP源码解析(二)
- 首先提到了SpringAOP是基于
postProcessBeforeInstantiation
和postProcessAfterInstantiation
两个方法实现的,这篇文章主讲postProcessBeforeInstantiation
- 加载增强
- 获取所有的增强又对增强进行了一系列的封装
基于注解的SpringAOP源码解析(三)
- 以
postProcessAfterInstantiation
开篇 - 所有的bean在初始化之后都会调用这个方法
- 在这里获取到之前加载到的所有的增强,和类的所有方法一一匹配
- 当类具有匹配增强的时候就可以为这个类生成具体的代理了
SpringJDBC源码解析
- 传统JDBC的使用
- 源码阅读环境的搭建
- 使用JdbcTemplate以update方法切入
- 获取连接加载驱动等方法的封装
- 请求参数的封装
- 调用驱动提供的方法
- query方法的分析,与update仅有返回结果的处理不同其他完全相同
Spring @Import注解源码解析
- 三种使用方式
- 加载时机
- 对不同使用方式的处理方式
Spring事务源码解析(一)
- 源码阅读环境的搭建
-
@EnableTransactionManagement
注解的原理解析
Spring事务源码解析(二)获取增强
读到这里的朋友希望您最好对AOP的源码有一定的了解
- 增强的获取
-
@Transactional
注解属性的解析
Spring事务源码解析(三)
- 创建事务信息(包含事务隔离级别的处理等)
- 调用执行链
- 异常回滚
- 清除事务信息
- 提交事务
SpringMVC源码解析(一)
- 源码阅读环境的搭建
- SpringBoot中SpringMVC自动配置原理
-
DispatcherServlet
的初始化逻辑 - web容器的初始化
SpringMVC源码解析(二)
- 获取对应的handler
- 获取对应的handlerAdapter
- 调用handle
- 执行拦截器
- 处理返回结果
源码阅读环境
您可能注意到上方文章中包含了很多源码阅读环境的搭建,当真正自己要去阅读时搭建起来还是比较浪费时间的。所以我把这些工作都替您做好了,您可以直接访问下方链接获取
https://github.com/shiyujun/spring-framework
后续规划
- Spring常用扩展点的应用场景
- SpringBoot源码解析
- SpringCloud常用组件源码解析
- MyBatis、druid源码解析
- 阿里开源Nacos、Sentinel、Seata源码解析
- K8S、Istio源码解析
- 等等
交流群
为了方便大家的交流学习,特意搞了个技术交流群,有兴趣的同学可以扫描下方二维码进群。如二维码过期可在公众号添加小编的微信发送暗号进群
上一篇: 深入理解SpringBoot(第二部分):启动过程的源代码剖析
下一篇: Linux安全基线与加固
推荐阅读
-
太赞了!这是一份超级无敌的Spring Cloud Alibaba完全指南,几乎覆盖所有操作技巧 - 如果你正在纠结选择哪个Spring Cloud技术栈,那一定要试试官方背书的Spring Cloud Alibaba。作为中国最强大的微服务框架,Spring Cloud Alibaba 在实战中证明了自己的实力,经历过双十一等大促考验,含金量爆棚,如今已经成为国内微服务领域的重量级武器。 关键一点,Spring Cloud Alibaba 很早就获得了Spring Cloud官方的认可和授权。相较于Spring Cloud官方的标准版本,它提供了更全面的功能、更易用的API,并且由于融入了中文支持,使得原本复杂难懂的微服务架构变得更加亲民。实际上,Spring Cloud Alibaba 已经是国内微服务技术领域的默认标杆,正是这一点让我强烈建议大家去学习掌握Spring Cloud Alibaba。
-
深入剖析Spring框架:起源、发展历程与源代码学习路径指南
-
简易指南:搭建Spring框架的源代码开发环境
-
2020最全面的Spring进阶源代码学习指南
-
入门讲解:Spring框架源代码系列(一) - 下载与阅读指南
-
全面解读Spring框架源代码合集指南
-
史上最全面、详尽且易懂的Spring框架源码搭建指南,绝对无二,极度详细讲解
-
简单易懂的Spring框架源代码学习指南
-
如何轻松获取Spring框架的源代码? - 必备收藏指南
-
深入剖析Spring框架的源代码全面解读