利用Spring的事务模版来手动回滚事务

本文介绍了如何在Spring中配置和使用事务模板类TransactionTemplate,以实现手动回滚事务。在Service层,通过设置TransactionStatus的rollbackOnly属性,当业务处理出现错误时,事务会被回滚,并记录相应的错误日志。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


  1. 在spring配置文件中,配置事务模版类对应的bean
    	<!-- 手动事务模板 -->
    	<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
    		<property name="transactionManager" ref="txMgr"/>
    	</bean>
  2. 在service中使用事务模版,在需要进行事务回滚的地方,手动回滚当前事务,见如下代码 :
    Message msg = transactionTemplate.execute(new TransactionCallback<Message>() {
    		@Override
    		public Message doInTransaction(TransactionStatus status) {
    			Message returnMsg = new Message();
    			try {
    				returnMsg = debitInfoService.doModDebitInfoWhenProcessFinish(requestMap);
    				if(!returnMsg.isSuccess()){
    					status.setRollbackOnly();
    				}
    			} catch (Exception e) {
    				returnMsg.setSuccess(false);
    				returnMsg.setMsg(ExceptionUtils.getMessage(e));
    				returnMsg.setValue(ExceptionUtils.getStackTrace(e));
    				status.setRollbackOnly();
    			}
    			return returnMsg;
    		}
    	});
    
    //如果处理错误,记录日志
    if(!msg.isS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值