此时 Spring 框架已经帮我们获取了一个 connetion,并且设置了 autoCommit 为 false。之后调用 service 中的代码,如果一切顺利 Spring 框架将继续调用 AbstractPlatformTransactionManager 中的 commit(…) 方法,继续看源码: 跳转到子类看下 doCommit(…) 方法具体做了些什么事情: 现在事务已经提交了,如果是异常的情况,父类中调用方法 robbback(…): 跳转到子类中看 doRollback(…) 的具体实现: 最后看一下对资源释放的代码,父类中 cleanupAfterCompletion(status) 方法调用了 doCleanupAfterCompletion(...): 至此 Spring 帮我们管理的事务,其主要流程和方法已经介绍完了,当然其中还有很多 private 方法和 protected 方法没有介绍。我想只要把主干捋清除之后,其他一些方法也很好理解了。 绕了一大圈,实际上还是绕不过开始事务,提交事务,回滚事务三件事,只是这三件事情现在由 Spring 帮助我们在背后默默做好了。 应该感谢 Spring 帮助程序员做了这些繁琐的事情,可以让程序员不用担心资源泄露之类事情,j2直播,专注于自己的业务逻辑代码。同时 Spring 框架代码规范,设计清晰也是程序员非常值得借鉴的地方。 本文作者:谢星星(点融黑帮),目前就职于点融网架构组Backend Architecture团队,简单务实的程序猿,写代码不给自己挖坑更不能留坑于他人。 (责任编辑:本港台直播) |