转载

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源码解析(三)

postProcessAfterInstantiation

SpringJDBC源码解析

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

Spring @Import注解源码解析

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

Spring事务源码解析(一)

@EnableTransactionManagement

Spring事务源码解析(二)获取增强

读到这里的朋友希望您最好对AOP的源码有一定的了解

@Transactional

Spring事务源码解析(三)

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

SpringMVC源码解析(一)

DispatcherServlet

SpringMVC源码解析(二)

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

源码阅读环境

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

https://github.com/shiyujun/s...

后续规划

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

交流群

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

Spring源码解析系列汇总

Spring源码解析系列汇总

原文  https://segmentfault.com/a/1190000020305930
正文到此结束
Loading...