关于Spring事物回滚
现象:
创建事物方法,显示抛出异常throw new Exception();或者catch Exception,事物不会回滚;
原因:
Spring事物拦截,需要被拦截方法显示抛出异常,才能回滚,但Spring默认拦截RuntimeException和Error,所以没有拦截到显示抛出的Exception。
解决办法:
1:针对需要事物控制的代码异常处理抛出RuntimeException或者子类异常;
2:手动事物回滚:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//设置手动回滚
只对想要进行事物控制的代码进行处理。