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

本篇文章是这段时间撸出来的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. 等等

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

Spring源码解析系列汇总的更多相关文章

  1. SpringBoot源码解析系列文章汇总

    相信我,你会收藏这篇文章的 本篇文章是这段时间撸出来的SpringBoot源码解析系列文章的汇总,当你使用SpringBoot不仅仅满足于基本使用时.或者出去面试被面试官虐了时.或者说想要深入了解一下 ...

  2. spring源码分析系列 (5) spring BeanFactoryPostProcessor拓展类PropertyPlaceholderConfigurer、PropertySourcesPlaceholderConfigurer解析

    更多文章点击--spring源码分析系列 主要分析内容: 1.拓展类简述: 拓展类使用demo和自定义替换符号 2.继承图UML解析和源码分析 (源码基于spring 5.1.3.RELEASE分析) ...

  3. spring源码分析系列

    spring源码分析系列 (1) spring拓展接口BeanFactoryPostProcessor.BeanDefinitionRegistryPostProcessor spring源码分析系列 ...

  4. spring源码分析系列 (1) spring拓展接口BeanFactoryPostProcessor、BeanDefinitionRegistryPostProcessor

    更多文章点击--spring源码分析系列 主要分析内容: 一.BeanFactoryPostProcessor.BeanDefinitionRegistryPostProcessor简述与demo示例 ...

  5. Android源码解析系列

    转载请标明出处:一片枫叶的专栏 知乎上看了一篇非常不错的博文:有没有必要阅读Android源码 看完之后痛定思过,平时所学往往是知其然然不知其所以然,所以为了更好的深入Android体系,决定学习an ...

  6. Spring源码解析-ioc容器的设计

    Spring源码解析-ioc容器的设计 1 IoC容器系列的设计:BeanFactory和ApplicatioContext 在Spring容器中,主要分为两个主要的容器系列,一个是实现BeanFac ...

  7. 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新

    本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...

  8. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  9. 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

    上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...

随机推荐

  1. ASP.NET Core 2.2 WebApi 系列【七】泛型仓储模式和工作单元

    在之前的泛型仓储模式实现中,每个增删改都调用了SaveChanges方法,导致每次更新都提交了事务. 在实际开发过程中,我们经常遇到同时操作多张表数据,那么按照之前的写法,对数据库提交了多次操作,开启 ...

  2. 本地SQL Server数据库提示网络问题无法连接

    运行程序时发现本地SQLserver数据库无法连接,提示信息为:在与SQL Server 建立连接时出现与网络相关的或特定与实例的错误.未能找到或无法访问服务器.请验证实例名称是否正确并且SQL Se ...

  3. 踏实型的TOGAF企业架构学习者要学什么?

    下载:本文PDF版 昨天有帮友在IT帮大本营微信群了问到 我打开ea网站的常见问题,截图回复了一下 如果让我再简单说一下该学什么,我想用下面这张图来说明 实操型的看 企业架构,从理论到实践 认证型的看 ...

  4. JavaScript中的循环和闭包

    看一段比较经典的错误代码: // 希望获取页面上的所有div,在点击的时输出对应的编号 var oDom = document.querySelectorAll("div"); / ...

  5. JavaScript学习笔记-----NaN、isNan

    NaN  /  Number.NaN 全局属性 NaN 的值表示不是一个数字(Not-A-Number), NaN 属性的初始值就是 NaN,和 Number.NaN 的值一样. 在现代浏览器中(ES ...

  6. arcgis api 4.x for js 自定义 Draw 绘制手绘面以及手绘线,只针对二维视图(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 4.x for js:esri 官网 api,里面详细的介绍 arcgis api 4.x 各个类 ...

  7. YARN HA部署架构

    hadoop001: zk rm(zkfc线程) nm hadoop002: zk rm(zkfc线程) nm hadoop003: zk nm RMStateStore: 存储在ZK的/rmstor ...

  8. 转载一篇:Django静态文件

    静态文件: 项目中的CSS.图片.js都是静态文件.一般会将静态文件放到一 个单独的目录中,以方便管理.在html页面中调用时,也需要指 定静态文件的路径,Django中提供了一种解析的方式配置静态文 ...

  9. python Djanjo csrf说明与配置

     Django csrf  CSRF 全称(Cross Site Request Forgery)跨站请求伪造.也被称为One Click Attack和Session Riding,通常缩写为CSR ...

  10. Nginx 配置详细文件

    概述 Nginx 是使用一个 master 进程来管理多个 worker 进程提供服务.master 负责管理 worker 进程,而 worker 进程则提供真正的客户服务,worker 进程的数量 ...