正大建设集团股份有限公司网站,vs2010网站开发教程,做网站之前要安装什么,1号店网站模板下载如上#xff1a; 当我们需要在事务控制的service层类中使用try catch 去捕获异常后#xff0c;就会使事务控制失效#xff0c;因为该类的异常并没有抛出#xff0c;就不是触发事务管理机制。怎样才能即使用try catch去捕获异常#xff0c;而又让出现异常后spring回滚呢 当我们需要在事务控制的service层类中使用try catch 去捕获异常后就会使事务控制失效因为该类的异常并没有抛出就不是触发事务管理机制。怎样才能即使用try catch去捕获异常而又让出现异常后spring回滚呢这里就要用到在service层方法的catch语句中增加TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();语句手动回滚这样上层就无需去处理异常了
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
其实像第一种try catch这种把整个包裹起来这种业务方法也就等于脱离了spring事务的管理因为没有任何异常会从业务方法中抛出全被捕获并“吞掉”导致spring异常抛出触发事务回滚策略失效。完美解决问题。并且能够使该方法执行完。