在实际开发中经常会有这样的业务 请求某个第三方接口后,需要保存对应请求的日志 LogVO vo = new LogVo();//设置一个保存日志的对象 try { //这里是第三方接口请求 }catch (Exception e){ log.error(e.getMessage(),e); //设置失败的请求结果 vo.setFail(true); throw new BusinessException(e); }finally { logservice.save(LogVO) }
由于finally都会执行成功,所以logservice.save(LogVO)是会执行的,但是
catch中有一个throw new BusinessException(e);方法会导致finally的save方法事务回滚
所以解决方式是,save方法设置成异步执行,这样是两个不同的事务,主线程的事务回滚不影响子线程的保存事务
想做副业的看过来!!!短剧风口,0投资,有抖音号跟着转发就行,业余时间给自己增加点额外收入吧!