
Spring 事务执行过程
前言 相信小伙伴一定用过 @Transactional 注解,那 @Transactional 背后的秘密又知道多少呢? Spring 是如何开启事务的?又是如何进行提交事务和关闭事务的呢? 画图猜测 在开始 debug 阅读源码之前,小伙伴们应该已经知道 MySQL 是如何开启事务的(https://mp.weixin.qq.com/s/UgNvOl0RF9v7w7dOLMnglw)。 因此可以得出猜测: 那下面跟着源码一起读一读,S
25 篇相关内容

前言 相信小伙伴一定用过 @Transactional 注解,那 @Transactional 背后的秘密又知道多少呢? Spring 是如何开启事务的?又是如何进行提交事务和关闭事务的呢? 画图猜测 在开始 debug 阅读源码之前,小伙伴们应该已经知道 MySQL 是如何开启事务的(https://mp.weixin.qq.com/s/UgNvOl0RF9v7w7dOLMnglw)。 因此可以得出猜测: 那下面跟着源码一起读一读,S

通过自注入示例比较事务、异步与循环依赖的代理行为和差异。

逐步分析动态代理场景下的循环依赖,并说明二级缓存不足与三级缓存的作用。

从循环依赖示例和调试过程,解释 Spring 创建 Bean 时解决循环依赖的步骤。

跟踪 getSingleton、createBean、doCreateBean 和 getObjectForBeanInstance,解释单例 Bean 的创建缓存过程。

围绕 FactoryBean、预实例化单例和 getBean 调用链,分析 finishBeanFactoryInitialization。

从事件注册与监听示例出发,说明 initApplicationEventMulticaster、onRefresh 和 registerListeners。

通过国际化文件和 MessageSource 示例,说明 initMessageSource 的初始化过程。

介绍 BeanPostProcessor 的用途,并跟踪 registerBeanPostProcessors 注册处理器的源码流程。

从示例和源码出发,梳理 BeanFactoryPostProcessor、BeanDefinitionRegistryPostProcessor 与 invokeBeanFactoryPostProcessors。

结合调试过程解释 prepareBeanFactory 和 postProcessBeanFactory 在 Spring 容器初始化中的作用。

概览 Spring refresh 容器刷新流程,重点说明刷新准备和 obtainFreshBeanFactory。

跟踪配置类注册入口 doRegisterBean 的源码和调试结果。

分析 ClassPathBeanDefinitionScanner 的默认过滤器、环境与资源加载器设置。

跟踪 AnnotatedBeanDefinitionReader 注册注解处理器的源码,并用调试验证调用关系。

介绍 BeanDefinition 的概念、元数据接口、AbstractBeanDefinition 及其实现类。

从入口和构造函数开始,说明 Spring 容器启动时 DefaultListableBeanFactory 的初始化。

比较 Java、XML、Groovy 和 GenericApplicationContext 创建 Spring IoC 容器的方式。

用 IoC、DI、Container 和 Bean 的概念,建立 Spring 容器与 Bean 管理的基础认识。

记录 Spring 源码学习环境的准备、源码下载、测试执行与常见编译问题排查。

Spring动态创建bean过程, 是如何进行选择使用 jdk还是cglib进行代理的, 可以通过源码进行解析

Spring动态代理可以选择使用jdk动态代理, 或者cglib动态代理, cglib动态代理位于 net.sf.cglib.proxy 包下.

Spring动态代理可以选择使用jdk动态代理, 或者cglib动态代理, jdk动态代理位于 java.lang.reflect 包下.

声明式事务管理建立在AOP之上的. 其本质是对方法前后进行拦截, 然后在目标方法开始之前创建或者加入一个事务, 在执行完目标方法之后根据执行情况提交或者回滚事务.

Interceptor: 拦截器,作用类似 Filter, 主要作用是拦截用户请求, 在 Action 执行的前后各执行一段代码, 进行相应的业务处理.