Spring的事务是如何实现的?

总述

spring的事务时由aop来实现的,首先要生成具体的代理对象,然后按照aop的整套流程来执行具体的操作逻辑,正常情况下,要通过通知来完成核心功能,但是事务不是通过通知来实现的,而是通过一个TransactionInterceptor类实现,然后调用invoke()方法来实现具体逻辑。

详细

  1. 先做准备工作,解析各个方法上事务相关的属性,根据具体的属性来判断是否开始新事务
  2. 当需要开启的时候,获取数据库连接,关闭自动提交功能,开启事务
  3. 执行具体的sql逻辑操作
  4. 在操作过程中,如果执行失败了,那么会通过completeTransactionAfterThrowing来完成事务的回滚操作,回滚的具体逻辑是通过doRollBack方法来实现,实现的时候也是要先获取连接对象,通过连接对象来回滚
  5. 如果执行过程中没有任何意外情况发生,那么通过completeTransactionAfterReturning来完成事务的提交操作,提交的具体逻辑是通过doCommit方法来实现,实现的时候也是要获取连接,通过连接对象来提交
  6. 当事务执行完毕之后需要清除相关事务信息cleanupTransactionInfo
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容