文章目录
编程式事务管理
事务管理器DataSourceTransactionManager
事务管理器封装好了事务处理的一些过程,最主要的就是关闭自动提交、手动提交、回滚这三个操作。
请看Spring提供的事务管理器的之间的关系:
图1
这里采用了模板方法模式,AbstractPlatformTransactionManager
是一个模板类,其中有很多抽象的的protected
方法,DataSourceTransactionManager
实现了AbstractPlatformTransactionManager
中的方法。
说这些也就是了解一下它的类型结构,关于这个类的使用,其实不必直接使用,而是通过Spring提供的另一个类TransactionTemplate
使用。
TransactionTemplate.execute()
TransactionTemplate提供了一个execute()方法,以下是这个方法的源代码,简单的来分析一下。
public <T> T execute(TransactionCallback<T> action) throws TransactionException {
Assert.state(this.transactionManager != null, "No PlatformTransactionManager set");
if (this.transactionManager instanceof CallbackPreferringPlatformTransactionManager) {
return ((CallbackPreferringPlatformTransactionManager) this.transactionManager).execute(this