相信我,你会收藏这篇文章的
本篇文章是这段时间撸出来的Spring源码解析系列文章的汇总,总共包含以下专题。喜欢的同学可以收藏起来以备不时之需
本篇文章搭建了IOC源码解析的demo环境,启动这个环境即可开启阅读Spring源码的第一步
开始源码阅读时介绍了Spring容器中最经典的容器
ClassPathXmlApplicationContext
,这个容器是我们在学习Spring的时候最先接触的一个容器,它负责加载当前环境下的xml配置文件紧接着介绍了bean工厂
BeanFactory
以及容器中bean的包装类BeanDefinition
然后就是Spring对xml配置文件的加载和解析
当解析的
beans
标签中各个bean
中时将会把这个东东使用BeanDefinition
包装后注册到容器中当
bean
注册完成后会有一些Spring对BeanFactory
的扩展点的处理当然除了扩展点还有国际化、监听器等操作
开篇先介绍了
conversionService
和EmbeddedValueResolver
两个比较有意思的东东然后就是重点的
bean
的初始化初始化过程中涉及到了
singleton
和prototype
两个Scope的bean
的处理当然,还有令人头疼的循环依赖问题
创建bean的过程中还有我们熟悉的
@Autowired
注解注入属性的方式接着就是一些清除缓存的操作
源码阅读环境的搭建
首先简单描述了
bean
容器AnnotationConfigApplicationContext
然后源码执行的第一步就是关于包扫描一块的东西,也就是我们比较熟悉的注解
@ComponentScan
扫描到了各个带有注解的类之后就是读取类呀、反射呀什么的来加载类
当
bean
已经加载完后就是bean
的注册逻辑了
源码阅读环境的搭建
@EnableAspectJAutoProxy
注解的原理@EnableAspectJAutoProxy
注解又使用到了@Import
注解,关于@Import
注解的文章下面有地址
首先提到了SpringAOP是基于
postProcessBeforeInstantiation
和postProcessAfterInstantiation
两个方法实现的,这篇文章主讲postProcessBeforeInstantiation
加载增强
获取所有的增强又对增强进行了一系列的封装
以
postProcessAfterInstantiation
开篇所有的bean在初始化之后都会调用这个方法
在这里获取到之前加载到的所有的增强,和类的所有方法一一匹配
当类具有匹配增强的时候就可以为这个类生成具体的代理了
传统JDBC的使用
源码阅读环境的搭建
使用JdbcTemplate以update方法切入
获取连接加载驱动等方法的封装
请求参数的封装
调用驱动提供的方法
query方法的分析,与update仅有返回结果的处理不同其他完全相同
三种使用方式
加载时机
对不同使用方式的处理方式
源码阅读环境的搭建
@EnableTransactionManagement
注解的原理解析
增强的获取
@Transactional
注解属性的解析
创建事务信息(包含事务隔离级别的处理等)
调用执行链
异常回滚
清除事务信息
提交事务
源码阅读环境的搭建
SpringBoot中SpringMVC自动配置原理
DispatcherServlet
的初始化逻辑web容器的初始化
获取对应的handler
获取对应的handlerAdapter
调用handle
执行拦截器
处理返回结果
源码阅读环境
您可能注意到上方文章中包含了很多源码阅读环境的搭建,当真正自己要去阅读时搭建起来还是比较浪费时间的。所以我把这些工作都替您做好了,您可以直接访问下方链接获取
后续规划
Spring常用扩展点的应用场景
SpringBoot源码解析
SpringCloud常用组件源码解析
MyBatis、druid源码解析
阿里开源Nacos、Sentinel、Seata源码解析
K8S、Istio源码解析
等等
交流群
如果文章对您有所帮助,收藏、转发、在看安排一下!!!