1.在trycatch捕获后根据业务需要我们手动回滚事务。
2.手动回滚事务代码
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly()
3.但是我加上之后报出了一下错误
No transaction aspect-managed TransactionStatus in scope
4.经查询资料大部分都是说方法或者业务类上未加@Transaction注解,但是我加了还是会报错
5.后使用AopUtils.isAopProxy(Object object)发现这个类未被aop代理导致事务失效。
6.因项目原因,怎么被代理情况不一样,自寻选择
7.手动回滚可配合回滚点使用,设置回滚点
Object point = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
8.回滚到事务点
TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
9.如何trycatch捕获异常后回滚数据并保存错误日志记录到日志表中
1.个人想到的是使用事物的传播机制 REQUIRED,REQUIRES_NEW
2.REQUIRED:如果有事务就加入事务,如果没有则新建事务
3.REQUIRES_NEW:不管有没有事务都新建事务,将原先事务挂起。
4.但由于在同一service层事务失效的原因,需要在日志service层保存日志。