spring事务回滚 异常处理,spring支持的事务功能包括 事务回滚
目录
spring报告了服务层方法中的错误。事务将不会回滚。服务手动回滚问题的解决方案
00-1010 @ transactional(roll back for={ exception . class })public void insert data()抛出异常{//业务代码1 business 1();//业务代码2 Business 2();//业务代码3 Business 3();}public void business1() {//此处省略业务操作}public void business2() {//此处省略业务操作}public void business3() {//此处省略业务操作}上述代码在服务层执行insertData方法时,business3中的代码执行错误,business1和business2中的操作不回滚。
00-1010方法一:捕捉服务方法中的异常,并向外抛出运行时异常。
@ transactional(roll back for={ exception . class })public void insert data()抛出异常{ try {//business code 1 business 1();//业务代码2 Business 2();//业务代码3 Business 3();} catch(Exception e){ throw new runtime Exception(e);} }方法二:在服务方法中捕获异常,并手动回滚事务。
00-1010,如果服务层的管理是为spring配置的。
在某些业务中,需要回滚。通常,会引发运行时异常。
抛出新的runtime exception();在这种情况下,代码就结束了。如果要给用户返回一个错误信息,就不方便了。此时,您可以添加以下代码,并在catch中手动回滚。
transactionaspectsupport . currenttransactionstatus()。setRollbackOnly();这样既能正常返回错误信息,又能保持事物的原子性。
以上个人经验,希望能给大家一个参考,也希望大家能支持盛行的IT。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。