Spring编程式事务管理案例
2017-01-18 16:50
363 查看
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallback;
import org.springframework.transaction.support.TransactionSynchronizationAdapter;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.transaction.support.TransactionTemplate;
//本类实现了一个事务,本地提交成功后再执行其他的事情
public class TestTransaction
{
@Autowired
TransactionTemplate transactionTemplate;
public void testTransaction(Objectobject)
{
Object result = transactionTemplate.execute(new TransactionCallback<Object>()
{
@Override
public Object doInTransaction(TransactionStatusstatus)
{
return doTransaction();
}
});
}
/**
* 执行本地事务代码
* @return
*/
private Object doTransaction()
{
//do something
//注意如下代码需要在数据库提交前注册到事务中
registTransactionSynchronizationManager();
//operate DB
return new Object();
}
/**
* 在当前线程中注册一个事物同步管理器,当事物执行成功后继续执行,也可以当事物成功执行前执行
*/
private void registTransactionSynchronizationManager()
{
if (TransactionSynchronizationManager.isSynchronizationActive())
{
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter()
{
//事物提交完毕后执行
@Override
public void afterCommit()
{
//doSomething
}
});
}
}
}
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallback;
import org.springframework.transaction.support.TransactionSynchronizationAdapter;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.transaction.support.TransactionTemplate;
//本类实现了一个事务,本地提交成功后再执行其他的事情
public class TestTransaction
{
@Autowired
TransactionTemplate transactionTemplate;
public void testTransaction(Objectobject)
{
Object result = transactionTemplate.execute(new TransactionCallback<Object>()
{
@Override
public Object doInTransaction(TransactionStatusstatus)
{
return doTransaction();
}
});
}
/**
* 执行本地事务代码
* @return
*/
private Object doTransaction()
{
//do something
//注意如下代码需要在数据库提交前注册到事务中
registTransactionSynchronizationManager();
//operate DB
return new Object();
}
/**
* 在当前线程中注册一个事物同步管理器,当事物执行成功后继续执行,也可以当事物成功执行前执行
*/
private void registTransactionSynchronizationManager()
{
if (TransactionSynchronizationManager.isSynchronizationActive())
{
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter()
{
//事物提交完毕后执行
@Override
public void afterCommit()
{
//doSomething
}
});
}
}
}
相关文章推荐
- Spring编程式事务管理和声明式事务管理 案例
- 转:全面分析 Spring 的编程式事务管理及声明式事务管理
- Spring的事务管理入门:编程式事务管理(TransactionTemplate)!!!
- 全面分析&nbsp;Spring&nbsp;的编程式事务管理…
- 全面分析 Spring 的编程式事务管理及声明式事务管理
- spring数据源的注入、JdbcTemplate管理、编程式的事务管理DataSourceTransactionManager
- 全面分析 Spring 的编程式事务管理及声明式事务管理
- 两种Spring事务管理方式:编程式、声明式 跟spring aop管理事务有什么不同?
- Spring备忘——事务管理(编程式事务管理)
- 全面分析 Spring 的编程式事务管理及声明式事务管理
- Spring+Mybatis+MySql+Maven 简单的事务管理案例
- Spring 的编程式事务管理及声明式事务管理--1
- 全面分析 Spring 的编程式事务管理及声明式事务管理
- 全面分析 Spring 的编程式事务管理及声明式事务管理
- 全面分析 Spring 的编程式事务管理及声明式事务管理(2)
- 全面分析 Spring 的编程式事务管理及声明式事务管理(转)
- 全面分析 Spring 的编程式事务管理及声明式事务管理
- 全面分析 Spring 的编程式事务管理及声明式事务管理
- spring 事务管理(编程式)
- 通过案例掌握Spring 管理事务的步骤及配置