客户程序调用
// 获取回调业务
TransactionCallback<Object> callback = getTransactionCallBack(params);
TransactionTemplate template = new TransactionTemplate(
transactionManager);
if (propagationBehavior != template.getPropagationBehavior())
{
template.setPropagationBehavior(propagationBehavior);
}
// 事务处理
Object result = template.execute(callback);
/**
* 获取事务执行回调接口
*
* @param context
* @param chainId
* @param logicType
* @return [参数说明]
*
* @return TransactionCallback<Object> [返回类型说明]
* @exception throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
private TransactionCallback<Object> getTransactionCallBack(
final Object... params)
{
TransactionCallback<Object> callback = new TransactionCallback<Object>()
{
@Override
public Object doInTransaction(TransactionStatus transactionstatus)
{
try
{
Object result = doBusiness(params);
logger.atFuncDebugLog("Submit transaction successfully ");
return result;
}
catch (Throwable t)
{
transactionstatus.setRollbackOnly();
logger.atFuncDebugLog("Submit transaction failed ",
t.getMessage());
throw t;
}
}
};
return callback;
}
/**
* 业务处理
*
* @return [参数说明]
*
* @return Object [返回类型说明]
* @exception throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
public abstract Object doBusiness(Object... params);